【发布时间】:2016-01-07 17:58:27
【问题描述】:
我正在尝试简化以下代码:
fn foo(a: i32) -> Option<i32> {
match bar() {
None => None,
Some(strct) => match strct.field {
None => None,
Some(field) => Some(a * field),
}
}
}
这就是我到目前为止所取得的成就。它可以工作,但我不知道如何删除unwrap() 调用以使其在功能上与原始版本相同。
fn foo(a: i32) -> Option<i32> {
bar().and_then(|strct| Some(a * strct.field.unwrap()))
}
P.S.:您如何建议对做这类事情有直觉?我经常在使用 Rust 时遇到这些问题,而且总是很困难。
【问题讨论】:
标签: error-handling rust