我想最小化程序的分配量,因此,我尝试使用.collect()
并收集到现有的Vec中,而不是在人造丝par_iter上调用collect_into()
。
以下是一些示例代码:
use rayon::prelude::*;
use rayon::iter::IndexedParallelIterator;
fn main() {
let a:Vec<u8> = vec![1,2,3,4];
let mut b: Vec<u8> = Vec::with_capacity(100);
a.into_par_iter().map(|x|x*2).collect_into(&mut b);
println!("{:?}",a);
}
编译器将打印而不是构建
error[E0599]: no method named `collect_into` found for type `rayon::iter::map::Map<rayon::vec::IntoIter<u8>, [closure@src/main.rs:8:27: 8:33]>` in the current scope
--> src/main.rs:8:35
|
8 | a.into_par_iter().map(|x|x*2).collect_into(&mut b);
| ^^^^^^^^^^^^
答案 0 :(得分:1)
在您似乎正在使用的Rayon 1.0发行版中,此方法已重命名为collect_into_vec()
。