Почему я не могу позвонить collect_into на par_iter? - PullRequest
0 голосов
/ 12 мая 2019

Я хочу минимизировать количество выделений, которые выполняет моя программа, поэтому вместо вызова .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);
   |                                   ^^^^^^^^^^^^

1 Ответ

1 голос
/ 12 мая 2019

Этот метод был переименован в collect_into_vec() в версии 1.0 Rayon, которую вы, похоже, используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...