Rust 有没有一种方法可以直接消费人造丝链而不先收集?

Rust 有没有一种方法可以直接消费人造丝链而不先收集?,rust,rayon,Rust,Rayon,我使用人造丝来产生相当大的回报值。在将所有返回值收集到Vec中时,这会占用大量内存。有没有办法避免创建一个Vec并直接作为一个iterable消费 下面是一个不起作用的示例: fn main() { let numbers: Vec<_> = "12.03 0.3 44.2 45 zzz".split_whitespace().collect(); let x = numbers .par_iter() .map(|n| n.pars

我使用人造丝来产生相当大的回报值。在将所有返回值收集到
Vec
中时,这会占用大量内存。有没有办法避免创建一个
Vec
并直接作为一个iterable消费

下面是一个不起作用的示例:

fn main() {
    let numbers: Vec<_> = "12.03 0.3 44.2 45 zzz".split_whitespace().collect();

    let x = numbers
        .par_iter()
        .map(|n| n.parse::<f32>())
        .filter_map(|n| n.ok());

    for n in x {
        println!("{:?}", n);
    }
}
fn main(){
让数字:Vec=“12.03 0.3 44.2 45 zzz”。拆分空白();
设x=数字
.par_iter()
.map(|n | n.parse::())
.filter_map(|n | n.ok());
对于x中的n{
println!(“{:?}”,n);
}
}
error[E0277]:特性绑定'rayon::iter::FilterMap[closure@src/main.rs:10:14:10:34]>[closure@src/main.rs:11:21:11:31]>`不是迭代器;也许可以尝试调用“.iter()”或类似的方法
|
=help:trait`std::iter::Iterator`没有为您要查找的`rayon::iter::FilterMap实现:

extern板条箱人造丝;//1.0.2
使用人造丝::前奏::*;
fn main(){
让数字=[“12.03”、“0.3”、“44.2”、“45”、“zzz”];
设x=numbers.par_iter().flat_map(|n | n.parse::());
x、 对于每个(n){
println!(“{:?}”,n);
});
}
相关的:

另见:


今后,请在您的帖子中包含所有相关代码,不要只包含指向代码托管站点的链接。你的帖子应该独立于任何其他资源;考虑一下如果这个网站将来会发生什么情况!
extern crate rayon; // 1.0.2

use rayon::prelude::*;

fn main() {
    let numbers = ["12.03", "0.3", "44.2", "45", "zzz"];

    let x = numbers.par_iter().flat_map(|n| n.parse::<f32>());

    x.for_each(|n| {
        println!("{:?}", n);
    });
}