Crate sparse_map

Crate sparse_map 

Source
Expand description

§Sparse Map

License Crates.io Downloads Docs CI Discord

A sparse map with stable generational keys. It is designed for scenarios with frequent insertions and removals.

The crate is no_std-friendly and uses generational indices to prevent use-after-free and slot reuse bugs.

§Example

use sparse_map::SparseMap;

let mut map = SparseMap::new();
let k1 = map.insert(42);

let k2 = map.scope(&k1, |map, value| {
    let k = map.insert(*value);
    *value += 2;

    k
})
.expect("Key should exist.");

assert_eq!(map.get(&k1), Some(&44));
assert_eq!(map.get(&k2), Some(&42));

map.remove(&k1);
assert_eq!(map.get(&k1), None);

§Join the community!

You can join us on the Voxell discord server.

§License

sparse_map is dual-licensed under either:

This means you can select the license you prefer! This dual-licensing approach is the de-facto standard in the Rust ecosystem and there are very good reasons to include both.

Structs§

Key
A stable, generational key into a SparseMap.
SparseMap
A sparse, generational map keyed by Key.