为什么不能在par_iter上调用collect_into?

时间:2019-05-12 18:52:40

标签: rust

我想最小化程序的分配量,因此,我尝试使用.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);
}

(Playground)

编译器将打印而不是构建

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

1 个答案:

答案 0 :(得分:1)

在您似乎正在使用的Rayon 1.0发行版中,此方法已重命名为collect_into_vec()