我有以下简化代码:
info()
在这种特定的错误情况下,我想从整个函数fn f() -> i32 {
let a = some_result.unwrap_or_else(|_| {
return 1; // want to return this value from f <-------------
});
}
中返回值1
,但是我无法从闭包中找出方法。
如果我改用f
表达式,则可以按以下方式正常工作:
match
但是,由于我的琐碎fn f() -> i32 {
let a = match some_result {
Ok(result) => result,
Err(_) => { return 1; },
};
}
匹配臂,这使代码变得冗长。
答案 0 :(得分:6)
不,没有。
闭包是内部的一种方法(一种功能)。您正在要求能够从任意深度嵌套的函数调用中退出父函数。通常,这种非本地流控制对程序员的理智和程序维护极为不利。
要解决您的问题,