orx-parallel 4.0.0

Performant parallel computations with an expressive iterator API.
Documentation
use crate::infallible::xap_variants::Id;
use crate::infallible_use::XapUse;
use crate::infallible_use::xap_variants::IdUse;
use crate::option_use::XapUseOptionIter;
use crate::sizes::OneOne;
use crate::use_var::UseVec;
use alloc::vec;
use alloc::vec::Vec;

#[test]
fn xap_use_option_iter_reuses_owned_use() {
    let using = UseVec::new(|_| 0usize);
    let x1 = IdUse::new(Id::<usize>::new()).map(|_, x| Some(x));
    let x2 = IdUse::new(Id::<usize>::new()).map(|u, x| {
        *u += 1;
        x + *u
    });
    let values: Vec<_> =
        XapUseOptionIter::<_, _, _, _, _, OneOne>::new(using, 0..4, x1, x2).collect();

    assert_eq!(values, vec![Some(1), Some(3), Some(5), Some(7)]);
}