繁体   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