Expand description
§Sparse Map
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:
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
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.