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);
});
}