Rust 标准库是否像 Java 8 Streams 提供的那样,具有在给定种子和 lambda 的情况下生成无限迭代器的函数?如果没有,Rust 中的类似替代方案是什么?
Stream.iterate(1, x -> 2 * x);
最佳答案
Rust 标准库 used在名称 unfold
下具有类似的功能,但它从未变得稳定并最终被删除。它现在住在 itertools crate :
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);
}
}
请注意,它有点复杂,因为状态不必与迭代器返回的内容完全匹配,并且您可以控制迭代器何时停止。 crate 可能会接受顶部薄层的 PR,以提供您的确切实现。
关于iterator - Rust 中是否有等同于 Java 的 Stream.Iterate 的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35908398/