Function seqkmer::parallel::buffer_read_parallel

source ·
pub fn buffer_read_parallel<R, D, W, O, F, Out>(
    reader: &mut R,
    n_threads: usize,
    buffer_size: usize,
    work: W,
    func: F,
) -> Result<()>
where D: Send + Sized + Sync + Clone, R: Read + Send, O: Send, Out: Send + Default, W: Send + Sync + Fn(Vec<D>) -> O, F: FnOnce(&mut ParallelResult<O>) -> Out + Send,
Expand description

Performs parallel reading and processing of buffered data.

§Examples

use seqkmer::{buffer_read_parallel, FastaReader};
use std::path::Path;
use std::fs::File;

let path = Path::new("tests/data/test.fasta");
let mut file = File::open(path)?;

let work = |data: Vec<u8>| {
    // Process data
    data.len()
};

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

let _ = buffer_read_parallel(&mut file, 4, 1024, work, func)?;