orx-parallel 3.4.0

High performance, configurable and expressive parallel computation library.
Documentation
use orx_parallel::*;
use test_case::test_matrix;

#[test_matrix([193], [0, 1], [0, 47])]
fn chain_known_known(n: usize, nt: usize, chunk: usize) {
    let a: Vec<_> = (0..n).map(|x| x.to_string()).collect();
    let b: Vec<_> = (0..n).map(|x| (n + x).to_string()).collect();

    let c: Vec<_> = a
        .par()
        .num_threads(nt)
        .chunk_size(chunk)
        .chain(&b)
        .collect();
    assert_eq!(c.len(), 2 * n);
    assert_eq!(c, a.iter().chain(&b).collect::<Vec<_>>());
}

#[test_matrix([193], [0, 1], [0, 47])]
fn chain_known_unknown(n: usize, nt: usize, chunk: usize) {
    let a: Vec<_> = (0..n).map(|x| x.to_string()).collect();
    let b: Vec<_> = (0..n)
        .map(|x| (n + x).to_string())
        .filter(|x| !x.starts_with('x'))
        .collect();

    let c: Vec<_> = a
        .par()
        .num_threads(nt)
        .chunk_size(chunk)
        .chain(&b)
        .collect();
    assert_eq!(c.len(), 2 * n);
    assert_eq!(c, a.iter().chain(&b).collect::<Vec<_>>());
}