orx-split-vec 3.23.0

An efficient dynamic capacity vector with pinned element guarantees.
Documentation
#![cfg(target_pointer_width = "32")]
use orx_split_vec::{SplitVec, *};

const LEN: usize = 1 << 14;

#[test]
fn grow_with_default_growth() {
    grow_split_vec(SplitVec::new());
}

#[test]
fn grow_with_doubling() {
    grow_split_vec(SplitVec::with_doubling_growth());
    grow_split_vec(SplitVec::with_doubling_growth_and_max_concurrent_capacity());
}

#[test]
fn grow_with_recursive() {
    grow_split_vec(SplitVec::with_recursive_growth());
    grow_split_vec(SplitVec::with_recursive_growth_and_max_concurrent_capacity());
}

#[test]
fn grow_with_linear() {
    grow_split_vec(SplitVec::with_linear_growth(10));
    grow_split_vec(SplitVec::with_linear_growth(28));
}

#[test]
#[should_panic]
fn grow_with_linear_panics_when_capacity_overflows() {
    grow_split_vec(SplitVec::with_linear_growth(29));
}

fn grow_split_vec<G: Growth>(mut vec: SplitVec<u8, G>) {
    assert!(vec.is_empty());

    for i in 0..LEN {
        vec.push(i as u8);
    }

    assert_eq!(vec.len(), LEN);

    for i in 0..LEN {
        assert_eq!(vec.get(i), Some(&(i as u8)));
    }
}