Function buffer_map_parallel

Source
pub fn buffer_map_parallel<D, W, O, F, Out>(
    map: &HashMap<u32, Vec<D>>,
    n_threads: usize,
    work: W,
    func: F,
) -> Result<()>
where D: Send + Sized + Sync, O: Send, Out: Send + Default, W: Send + Sync + Fn((&u32, &Vec<D>)) -> O, F: FnOnce(&mut ParallelResult<O>) -> Out + Send,
Expand description

Performs parallel processing on a HashMap.

ยงExamples

use seqkmer::buffer_map_parallel;
use std::collections::HashMap;

let mut map = HashMap::new();
map.insert(1, vec![1, 2, 3]);
map.insert(2, vec![4, 5, 6]);

let work = |(key, value): (&u32, &Vec<i32>)| {
    // Process data
    value.iter().sum::<i32>()
};

let func = |result: &mut seqkmer::ParallelResult<i32>| {
    let mut total = 0;
    while let Some(sum) = result.next() {
        total += sum.unwrap();
    }
    total
};

let total = buffer_map_parallel(&map, 4, work, func)?;
println!("Total sum: {:?}", total);