bru*_*olf 2 error-handling iterator filter rust
我想使用一个可能返回Err结果的过滤器函数,并将其冒泡到包含函数中:
mycoll.into_iter()
.filter(|el| {
if el == "bad" {
Err(MyError)
} else {
Ok(el < "foo")
}
})
Run Code Online (Sandbox Code Playgroud)
我找到了一个关于如何处理这种情况的很好的解释map()(使用.collect::<Result<...>>()):当 Iterator::map 返回 Result::Err 时,如何停止迭代并返回错误?但我无法获得类似的解决方案来为filter().
这里的惯用解决方案是什么?
我可能会建议使用filter_map. 您的示例如下所示:
mycoll.into_iter()
.filter_map(|el| {
if el == "bad" {
Some(Err(MyError))
} else if el < "foo" {
Some(Ok(el))
} else {
None
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
269 次 |
| 最近记录: |