shared-vec 0.1.0

Efficient shared container types
Documentation
//! Basic synchronization tests for [`shared_vec`] crate

use shared_vec::ArcVec;
use std::thread::scope;

#[test]
fn arc_vec() {
    let v = ArcVec::from_boxed_slice(Box::new([1, 2, 3, 4, 5]));
    assert_eq!(v.len(), 5);

    scope(|s| {
        s.spawn(|| {
            let v2 = v.clone();
            assert_eq!(v2.len(), 5);
            assert_eq!(&*v2, &[1, 2, 3, 4, 5]);
        });
        s.spawn(|| {
            let v3 = v.get(1..4).unwrap();
            assert_eq!(v3.len(), 3);
            assert_eq!(&*v3, &[2, 3, 4]);
        });
        s.spawn(|| {
            let v4 = v.idx(0..2);
            assert_eq!(v4.len(), 2);
            assert_eq!(&*v4, &[1, 2]);
        });
    });
}