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