我有以下简化的代码:
fn f() -> i32 {
let a = some_result.unwrap_or_else(|_| {
return 1; // want to return this value from f <-------------
});
}
在这种特定的错误情况下,我希望能够从整个函数f
中返回值1
,但我无法从闭包内部弄清楚如何实现。
如果我改用match
表达式,则可以正常工作,如下所示:
fn f() -> i32 {
let a = match some_result {
Ok(result) => result,
Err(_) => { return 1; },
};
}
然而,这使得代码冗长,因为我有一个平凡的Ok
匹配分支。
.unwrap_or(1)
直接返回 1。 - matiu