簡體   English   中英

結果的 Rust 簡寫<type, Box<dyn std::error::Error> &gt;

[英]Rust shorthand for Result<type, Box<dyn std::error::Error>>

在進行錯誤捕獲時,我通常使函數返回結果。 但是我覺得每次都寫 Result<type, Box<...>> 真的很冗長,是否有一些內置的速記?

fn something() -> Result<(), Box<dyn std::error::Error>> {
  Ok(())
}

您可以使用泛型參數定義類型別名。 許多板條箱是這樣的:

type Result<T> = std::result::Result<T, Box<dyn std::error::Error>>;

fn something() -> Result<()> {
  Ok(())
}

anyhow板條箱,通過SERDE的作者寫的,是圍繞到符合人體工程學的替代Box<dyn std::error::Error>稱為anyhow::Error 它定義了anyhow::Result<T>作為Result<T, anyhow::Error>別名:

fn something() -> anyhow::Result<()> {
    Ok(())
}

缺點是它是一個外部板條箱,盡管它非常受歡迎且經過充分測試。

好處是您可以獲得良好的人體工程學、附加功能(例如Result上的context()with_context() ),以及非平凡的優化 - anyhow::Error是一個窄指針而不是一個寬指針,因此您的ResultBox<dyn Error>相比,s 更小更高效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM