orx-split-vec 3.8.0

An efficient constant access time vector with dynamic capacity and pinned elements.
Documentation
use orx_split_vec::*;
use std::cmp::Ordering;

#[test]
fn sort() {
    let mut vec: SplitVec<_> = [3, 4, 1, 2, 3, 5, 8, 10, 9].into_iter().collect();
    vec.sort();
    assert_eq!(&vec, &[1, 2, 3, 3, 4, 5, 8, 9, 10]);
}

#[test]
fn sort_by() {
    let compare = |a: &i32, b: &i32| match a.cmp(b) {
        Ordering::Less => Ordering::Greater,
        Ordering::Greater => Ordering::Less,
        Ordering::Equal => Ordering::Equal,
    };
    let mut vec: SplitVec<_> = [3, 4, 1, 2, 3, 5, 8, 10, 9].into_iter().collect();
    vec.sort_by(compare);
    assert_eq!(&vec, &[10, 9, 8, 5, 4, 3, 3, 2, 1]);
}

#[test]
fn sort_by_key() {
    let key = |a: &i32| match a % 2 {
        0 => *a,
        _ => -a,
    };

    let mut vec: SplitVec<_> = [3, 4, 1, 2, 3, 5, 8, 10, 9].into_iter().collect();
    vec.sort_by_key(key);
    assert_eq!(&vec, &[9, 5, 3, 3, 1, 2, 4, 8, 10]);
}