首页 > 解决方案 > 为什么我不能在 par_iter 上调用 collect_into?

问题描述

我想尽量减少我的程序所做的分配量,所以我没有调用.collect()人造丝 par_iter,而是尝试使用collect_into(), 收集到现有的 Vec 中。

这是一些示例代码:

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

标签: rust

解决方案


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


推荐阅读