【发布时间】:2014-11-22 00:09:29
【问题描述】:
在 Rust 中,是否有类似地图的等价物可以根据我可以选择的条件停止迭代?
我想迭代一个向量,在我这样做的时候对每个元素调用一个函数并存储结果,但是如果函数返回值满足某个条件,停止迭代
迭代伪代码示例:
results = []
for elem in vec:
result = foo(elem)
if result is None
break
results.push(result)
我可以用scan 通过改变初始状态来实现一个笨拙的等价物,但是(AFAIK)它仍然会遍历每个元素:
用于扫描变体的类似 Rust 的伪代码:
results = vec.iter().scan(false, |fail, elem|
if *fail
return None
result = foo(elem)
if result is None
*fail = true
return result
).collect()
【问题讨论】:
标签: functional-programming rust