【发布时间】:2020-07-08 17:46:35
【问题描述】:
我正在调用一个返回Result<T, E> 的函数,我想处理Ok 的情况,但如果返回错误,则返回Err。最干净的方法是什么?
例如,我有:
fn example() -> Result<(), Error> {
match foo() {
Ok(v) => bar(v),
Err(e) => Err(e),
}
}
有哪些其他的写作形式?在堆栈中的每个调用中将e 重新包装在另一个Err 中感觉很奇怪。此外,每个调用基本上都是 4 行样板文件......我只是在寻找一种简化并使其更具可读性的方法。我的愿望是让它在错误时返回错误,否则处理结果值。
【问题讨论】:
-
let v = foo()?将向上传播错误。请参阅 rust 文档中的 this 示例。 -
请花时间阅读The Rust Programming Language。在这种情况下,Recoverable Errors with Result.
-
这是相关部分:doc.rust-lang.org/book/…
标签: error-handling rust