Trait entangled::ParallelSliceMut[][src]

pub trait ParallelSliceMut<T: Send>: AsMut<[T]> {
    fn par_chunk_map_mut<F, R>(
        &mut self,
        task_pool: &TaskPool,
        chunk_size: usize,
        f: F
    ) -> Vec<R>
    where
        F: Fn(&mut [T]) -> R + Send + Sync,
        R: Send + 'static
, { ... }
fn par_splat_map_mut<F, R>(
        &mut self,
        task_pool: &TaskPool,
        max_tasks: Option<usize>,
        f: F
    ) -> Vec<R>
    where
        F: Fn(&mut [T]) -> R + Send + Sync,
        R: Send + 'static
, { ... } }

Helper functions to iterate over a mutable slice in parallel.

Provided methods

fn par_chunk_map_mut<F, R>(
    &mut self,
    task_pool: &TaskPool,
    chunk_size: usize,
    f: F
) -> Vec<R> where
    F: Fn(&mut [T]) -> R + Send + Sync,
    R: Send + 'static, 
[src]

Iterates in parallel over a mutable slice with a given chunk size.

Example

use entangled::*;

let mut v = vec![42; 1000];
let task_pool = TaskPool::default();

let outputs = v.par_chunk_map_mut(&task_pool, 512, |numbers| -> i32 {
for number in numbers.iter_mut() {
    *number *= 2;
}
numbers.iter().sum()
});

let mut sum = 0;
for output in outputs {
    sum += output;
}

assert_eq!(sum, 1000 * 42 * 2);
assert_eq!(v[0], 84);

fn par_splat_map_mut<F, R>(
    &mut self,
    task_pool: &TaskPool,
    max_tasks: Option<usize>,
    f: F
) -> Vec<R> where
    F: Fn(&mut [T]) -> R + Send + Sync,
    R: Send + 'static, 
[src]

Iterates in parallel over a mutable slice with a given maximum of tasks. max_tasks is None, it will use the thread number of the TaskPool.

Example

use entangled::*;

let mut v = vec![42; 1000];
let task_pool = TaskPool::default();

let outputs = v.par_splat_map_mut(&task_pool, None, |numbers| -> i32 {
for number in numbers.iter_mut() {
    *number *= 2;
}
numbers.iter().sum()
});

let mut sum = 0;
for output in outputs {
    sum += output;
}

assert_eq!(sum, 1000 * 42 * 2);
assert_eq!(v[0], 84);
Loading content...

Implementors

impl<S, T: Send> ParallelSliceMut<T> for S where
    S: AsMut<[T]>, 
[src]

Loading content...