anyhow
是一个 Rust 库,用于简化错误处理。它允许您以一致的方式处理不同类型的错误。要在 Rust 中使用 anyhow
传递错误,请遵循以下步骤:
- 首先,在您的
Cargo.toml
文件中添加anyhow
作为依赖项:
[dependencies] anyhow = "1"
- 在您的代码中导入
anyhow
库:
use anyhow::{Context, Result};
-
使用
Result
类型来表示可能出错的操作。如果操作成功,返回Ok
变量;如果操作失败,返回Err
变量,其中包含有关错误的详细信息。 -
使用
?
运算符将错误从函数中传播到调用者。如果Err
变量包含错误信息,?
运算符将自动将其转换为anyhow::Error
类型,并将其传递给调用者。
下面是一个简单的示例,说明如何使用 anyhow
传递错误:
use anyhow::{Context, Result}; fn divide(a: u32, b: u32) -> Result{ if b == 0 { return Err("division by zero".context()); } Ok(a / b) } fn main() -> Result<()> { let result = divide(10, 0)?; println!("Result: {}", result); Ok(()) }
在这个示例中,我们定义了一个名为 divide
的函数,该函数接受两个 u32
参数并返回一个 Result
类型。如果除数为零,我们返回一个包含错误信息的 Err
变量。在 main
函数中,我们调用 divide
函数并使用 ?
运算符将错误传播到调用者。如果发生错误,程序将打印错误信息并提前退出。