pub trait ThreadedMappable<F, O>where
    Self: Iterator,
    F: Fn(<Self as Iterator>::Item) -> <O as Iterator>::Item + Send + Clone,
    <Self as Iterator>::Item: Send,
    O: Iterator,
    O::Item: Send + Sync,{
    // Required method
    fn parallel_map(self, f: F, num_threads: Option<usize>) -> O;
}

Required Methods§

source

fn parallel_map(self, f: F, num_threads: Option<usize>) -> O

Maps items of an iterator in parallel while conserving their order

Examples
use threaded_map::ThreadedMappable;
let items = vec![1, 2, 3, 4, 5, 6];
let target: Vec<_> = items.iter().map(i32::to_string).collect();

let result: Vec<_> = items
    .into_iter()
    .parallel_map(|item| item.to_string(), None)
    .collect();

assert_eq!(result, target);

Implementors§

source§

impl<I, F, O> ThreadedMappable<F, ThreadedMap<I, F, O>> for Iwhere I: Iterator, F: Fn(<I as Iterator>::Item) -> O + Send + Clone, <I as Iterator>::Item: Send, O: Send + Sync,