Option 与 Result 都会有一些常用的快捷函数操作,总结归纳一下。
map
接收一个匿名函数
- Result:会将一个
Result<T, E>
映射到Result<U, E>
- Option:会将一个
Option<T>
映射到Option<U>
map_or
接收一个默认值 U,一个匿名函数
- Result:会将一个
Result<T, E>
映射到默认值 U,或者匿名函数返回的 U - Option:会将一个
Option<T>
映射到默认值 U,或者匿名函数返回的 U
map_or_else
接收一个默认匿名函数,还有另一个匿名函数
- Result:会将一个
Result<T, E>
错误时执行默认匿名函数,返回 U;Ok 时执行另一个匿名函数,返回 U。 - Option:None 时执行执行默认匿名函数,返回 U;Some 时执行另一个匿名函数,返回 U。
unwrap
不解释
unwrap_or
需要提供一个默认值 T
- Result:将
Result<T, E>
返回 T - Option:将
Option<T>
返回 T
unwrap_or_default
不需要参数
- Result:将
Result<T, E>
返回 T,错误则返回 T 类型的默认值; - Option:将
Option<T>
返回 T,none 则返回 T 类型的默认值;
unwrap_or_else
需要一个闭包,闭包返回 T
- Result:将
Result<T,E>
返回 T,如果错误则调用闭包依然返回 T; Option:将
Option<T>
返回 T,如果是 None 则调用闭包依然返回 T;or
需要另一个相同类型的值
Result:将
Result<T, E>
为 E 时,返回参数;- Option:将
Option<T>
中的 None,返回参数;
说明:A.or_else(B) 如果 A 为「异常」值,那么返回 B
or_else
需要一个闭包
- Result:将
Result<T, E>
中返回的 E,转为 F,最终结果为Result<T, F>
; - Option:将
Option<T>
中的 None,转为另一个Option<T>
;
说明:A.or_else(B) 如果 A 为「异常」值,那么返回 B 的执行结果
upwrap_err/upwrap_none
- Result:返回 E
- nightly
其他
- ok from
Result<T, E>
toOption<T>
- ok_or 将
Option<T>
转为Result<T, E>
直接提供一个 err - ok_or_else 将
Option<T>
转为Result<T, E>
提供一个闭包