【发布时间】:2019-02-01 07:15:41
【问题描述】:
我有以下简化代码:
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)