有什么办法从闭包内部从函数返回吗?

时间:2018-08-26 15:21:17

标签: rust return closures

我有以下简化代码:

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; }, }; } 匹配臂,这使代码变得冗长。

1 个答案:

答案 0 :(得分:6)

不,没有。

闭包是内部的一种方法(一种功能)。您正在要求能够从任意深度嵌套的函数调用中退出父函数。通常,这种非本地流控制对程序员的理智和程序维护极为不利。


要解决您的问题,