此问题在此处已有答案:
How do I stop iteration and return an error when Iterator::map returns a Result::Err?(4个答案)
6天前关闭。
我有一个类型定义如下:
pub struct State<T: Clone + Eq> {
pub db: HashSet<T>,
}
我有一个函数,看起来像下面这样:
fn check(&self) -> Result<(), Error> {
self.db.iter().for_each(|elem| elem.check());
Ok(())
}
因此,我想为HashSet
中的每个元素调用check
函数。我只是想确保所有返回()
或有一些Error
抛出。上面抛出错误,因为它期望()
作为elem.check()
的输出,但它返回Result
。在Rust中正确的处理方法是什么?
1条答案
按热度按时间s4n0splo1#
从
(): FromIterator<()>
开始,将多个Result<(), E>
短路“收集”到另一个Result<(), E>
实际上是非常符合人体工程学的:但不清楚这比命令式解决方案有什么优势,后者要清楚得多。