From 341d737cb165f7cfe4d878914d9e870a973aa1a9 Mon Sep 17 00:00:00 2001 From: Rustln Date: Wed, 13 Apr 2022 16:23:15 +0800 Subject: [PATCH] Add `anyhow` sample code. --- src/advance/errors.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/advance/errors.md b/src/advance/errors.md index 7716f104..58233145 100644 --- a/src/advance/errors.md +++ b/src/advance/errors.md @@ -667,7 +667,25 @@ fn render() -> Result { > 如果你想要设计自己的错误类型,同时给调用者提供具体的信息时,就使用 `thiserror`,例如当你在开发一个三方库代码时。如果你只想要简单,就使用 `anyhow`,例如在自己的应用服务中。 -本章的篇幅已经过长,因此就不具体介绍 `anyhow` 该如何使用,官方提供的例子已经足够详尽,这里就留给大家自己探索了 :) +```rust +use std::fs::read_to_string; + +use anyhow::Result; + +fn main() -> Result<()> { + let html = render()?; + println!("{}", html); + Ok(()) +} + +fn render() -> Result { + let file = std::env::var("MARKDOWN")?; + let source = read_to_string(file)?; + Ok(source) +} +``` + +关于如何选用 `thiserror` 和 `anyhow` 只需要遵循一个原则即可:**是否关注自定义错误消息**,关注则使用 `thiserror`(常见业务代码),否则使用 `anyhow`(编写第三方库代码)。 ## 总结