sparse_map 0.1.2

A sparse map with stable generational keys.
Documentation

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.