pub trait ThreadedMappable<F>where
    Self: Iterator,
    F: FnOnce(<Self as Iterator>::Item) -> <Self::Iter as Iterator>::Item + Send + Clone,
    <Self as Iterator>::Item: Send,
    Self::Iter: Iterator,
    <Self::Iter as Iterator>::Item: Send + Sync,{
    type Iter;

    // Required method
    fn parallel_map(self, f: F, num_threads: Option<usize>) -> Self::Iter;
}

Required Associated Types§

Required Methods§

source

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

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> for Iwhere I: Iterator, F: FnOnce(<I as Iterator>::Item) -> O + Clone + Send + 'static, <I as Iterator>::Item: Send + 'static, O: Send + Sync + 'static,

§

type Iter = ThreadedMap<I, F, O>