【发布时间】:2020-10-25 23:09:41
【问题描述】:
鉴于以下两个功能,我如何将两个Result“扁平化”为一个?
fn result1() -> Result<u8, String> {
Ok(10)
}
fn result2(number: u8) -> Result<u8, String> {
Ok(number * 2)
}
所以,运行以下代码:
fn main() {
let result = result1().map(|number| result2(number));
println!("{:?}", result);
// Output: Ok(Ok(20))
}
我得到与这段代码相同的结果:
fn main() {
let result = result1().map(|number| number * 2);
println!("{:?}", result);
// Output: Ok(20)
}
注意嵌套的 Ok Ok(Ok(20)) 而不是正确的单个 Ok Ok(20)。
类似于我正在寻找的东西是 Rx flatmap,但是当我正在研究 rust 时,我想使用语言思维来完成这项工作。
【问题讨论】:
标签: rust