geiserx_ts_array256 0.21.0

fast sparse 256-element array with configurable backing storage
Documentation

ts_array256

A sparse array of 256 elements.

Used in bart as sparse backing storage for the node tries. Generally useful for memory-efficient storage of items indexed by u8.

Indexed by [Bitset256] and has configurable backing [ArrayStorage] (typically Vec).

Examples

use ts_array256::Array256;
use ts_bitset::Bitset256;

fn main() {
    let mut ary = Array256::<Vec<usize>>::default();

    ary.insert(0, 1234);
    assert_eq!(ary.get(0), Some(&1234));
    assert_eq!(ary.get(123), None);

    *ary.get_mut(0).unwrap() += 1;
    assert_eq!(ary.get(0), Some(&1235));

    ary.insert(3, 555);

    let bitset_test = Bitset256::EMPTY.with_bits(&[0, 1, 2, 3, 4]);
    let intersected_bit = ary.intersection_top(&bitset_test);
    assert_eq!(intersected_bit, Some(3));
    assert_eq!(
        Bitset256::EMPTY.with_bits(&[0, 3]),
        bitset_test &*ary.bitset(),
    );
}