orx-split-vec 3.23.0

An efficient dynamic capacity vector with pinned element guarantees.
Documentation
use orx_concurrent_iter::{ConcurrentIter, IntoConcurrentIter};
use orx_split_vec::{PinnedVec, SplitVec};

fn into_con_iter_first<I>(x: I) -> Option<I::Item>
where
    I: IntoConcurrentIter,
{
    let con_iter = x.into_con_iter();
    con_iter.next()
}

#[test]
fn into_con_iter() {
    let mut vec = SplitVec::<usize>::new();
    vec.push(42);

    let first = into_con_iter_first(vec);
    assert_eq!(first, Some(42));
}

#[test]
fn ref_into_con_iter() {
    let mut vec = SplitVec::<usize>::new();
    vec.push(42);

    let first = into_con_iter_first(&vec);
    assert_eq!(first, Some(&42));
}

#[test]
fn con_iterable() {
    fn fun<I>(x: I) -> Option<I::Item>
    where
        I: orx_concurrent_iter::ConcurrentIterable,
    {
        let con_iter = orx_concurrent_iter::ConcurrentIterable::con_iter(&x);
        con_iter.next()
    }

    let mut vec = SplitVec::<usize>::new();
    vec.push(42);

    let first = fun(&vec);
    assert_eq!(first, Some(&42));
}

#[test]
fn con_collection() {
    fn fun<I>(x: &I) -> Option<&I::Item>
    where
        I: orx_concurrent_iter::ConcurrentCollection,
    {
        let con_iter = orx_concurrent_iter::ConcurrentCollection::con_iter(x);
        con_iter.next()
    }

    let mut vec = SplitVec::<usize>::new();
    vec.push(42);

    let first = fun(&vec);
    assert_eq!(first, Some(&42));
}