Rust标准库是否具有像Java 8 Streams所提供的那样在给定种子和lambda的情况下生成无限迭代器的函数?如果没有,Rust中有什么类似的替代方法?
Stream.iterate(1, x -> 2 * x);
锈病标准库使用有名下类似的功能unfold
,但它从来没有稳定,并最终移除。现在它位于itertools板条箱中:
extern crate itertools;
use itertools::Unfold;
fn main() {
let x = Unfold::new(1, |x| {
*x *= 2;
Some(*x)
});
for val in x.take(10) {
println!("{}", val);
}
}
注意,这有点复杂,因为状态不必与迭代器返回的内容完全匹配,并且您可以控制迭代器何时停止。板条箱可能会接受顶部薄层的PR,从而提供确切的实施方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句