sparse_map

Crates.iosparse_map
lib.rssparse_map
version0.1.2
created_at2026-01-06 14:03:02.497458+00
updated_at2026-01-12 03:45:20.673291+00
descriptionA sparse map with stable generational keys.
homepage
repositoryhttps://github.com/voxell-tech/sparse_map
max_upload_size
id2025919
size27,743
Nixon (nixonyh)

documentation

README

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.

Commit count: 4

cargo fmt