Trait rayon::slice::ParallelSlice [−][src]
pub trait ParallelSlice<T: Sync> { fn as_parallel_slice(&self) -> &[T]; fn par_split<P>(&self, separator: P) -> Split<'_, T, P>
where
P: Fn(&T) -> bool + Sync + Send, { ... } fn par_windows(&self, window_size: usize) -> Windows<'_, T> { ... } fn par_chunks(&self, chunk_size: usize) -> Chunks<'_, T> { ... } fn par_chunks_exact(&self, chunk_size: usize) -> ChunksExact<'_, T> { ... } }
Expand description
Parallel extensions for slices.
Required methods
fn as_parallel_slice(&self) -> &[T]
[src]
fn as_parallel_slice(&self) -> &[T]
[src]Returns a plain slice, which is used to implement the rest of the parallel methods.
Provided methods
Returns a parallel iterator over subslices separated by elements that match the separator.
Examples
use rayon::prelude::*; let smallest = [1, 2, 3, 0, 2, 4, 8, 0, 3, 6, 9] .par_split(|i| *i == 0) .map(|numbers| numbers.iter().min().unwrap()) .min(); assert_eq!(Some(&1), smallest);
fn par_windows(&self, window_size: usize) -> Windows<'_, T>
[src]
fn par_windows(&self, window_size: usize) -> Windows<'_, T>
[src]Returns a parallel iterator over all contiguous windows of length
window_size
. The windows overlap.
Examples
use rayon::prelude::*; let windows: Vec<_> = [1, 2, 3].par_windows(2).collect(); assert_eq!(vec![[1, 2], [2, 3]], windows);
fn par_chunks(&self, chunk_size: usize) -> Chunks<'_, T>
[src]
fn par_chunks(&self, chunk_size: usize) -> Chunks<'_, T>
[src]Returns a parallel iterator over at most chunk_size
elements of
self
at a time. The chunks do not overlap.
If the number of elements in the iterator is not divisible by
chunk_size
, the last chunk may be shorter than chunk_size
. All
other chunks will have that exact length.
Examples
use rayon::prelude::*; let chunks: Vec<_> = [1, 2, 3, 4, 5].par_chunks(2).collect(); assert_eq!(chunks, vec![&[1, 2][..], &[3, 4], &[5]]);
fn par_chunks_exact(&self, chunk_size: usize) -> ChunksExact<'_, T>
[src]
fn par_chunks_exact(&self, chunk_size: usize) -> ChunksExact<'_, T>
[src]Returns a parallel iterator over chunk_size
elements of
self
at a time. The chunks do not overlap.
If chunk_size
does not divide the length of the slice, then the
last up to chunk_size-1
elements will be omitted and can be
retrieved from the remainder function of the iterator.
Examples
use rayon::prelude::*; let chunks: Vec<_> = [1, 2, 3, 4, 5].par_chunks_exact(2).collect(); assert_eq!(chunks, vec![&[1, 2][..], &[3, 4]]);