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<u32> {
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<u32>
類型。如果除數為零,我們返回一個包含錯誤信息的 Err
變量。在 main
函數中,我們調用 divide
函數并使用 ?
運算符將錯誤傳播到調用者。如果發生錯誤,程序將打印錯誤信息并提前退出。