Expand description
The par_array_init
crate allows you to initialize arrays with an initializer closure that will be called in parallel to fill the array.
This crate mirrors the api of crate (array-init)[https://crates.io/crates/array-init] with the caveat that initialization is performed in parallel.
An important departure from array-init
, initialization order is not deterministic and should not be relied on.
Parallelization is achieved using (rayon)[https://https://crates.io/crates/rayon] and it’s ParallelIterator
api.
§Examples:
// Initialize an array of length 10 containing successive squares
let arr: [usize; 50] = par_array_init::par_array_init(|i| i * i);
// Initialize an array from an iterator producing an array filled with 34's
let mut iter = rayon::iter::repeat(34u32).take(50);
let arr: Option<[u32; 50]> = par_array_init::from_par_iter(iter);
Traits§
- IsPar
Array - Extension of
array_init::IsArray
that includes method to convert the array to a mutable slice.&mut [T]
implements parallel iterator so this allows us to write our elements in parallel without having to explicitly pass a*mut T
across threads.
Functions§
- from_
par_ iter - Initialize an array given a parallel iterator.
- par_
array_ init - Initialize an array given a function from index to element