11个版本
0.3.3 | 2024年6月14日 |
---|---|
0.3.2 | 2024年6月2日 |
0.2.0 | 2024年5月28日 |
0.1.8 | 2024年3月15日 |
0.1.0 | 2023年9月8日 |
#676 in 数据结构
用于 pi_world
30KB
440 行
线程安全slotmap
slotmap
A Rust库提供三个具有持久唯一键的容器来访问存储的值。在插入时返回一个键,可用于稍后访问或删除值。插入、删除和访问都耗时O(1),开销低。非常适合存储需要稳定、安全引用但所有权不明确的对象集合,例如游戏实体或图节点。还提供了键映射,KeyMap
,允许您将其他对象映射到slotmap创建的键。请参阅文档获取更多信息。
[dependencies]
pi_slot = "0.1"
示例
一个简短的示例
use slotmap::SlotMap;
let sm = SlotMap::new();
let foo = sm.insert("foo"); // Key generated on insert.
let bar = sm.insert("bar");
assert_eq!(sm[foo], "foo");
assert_eq!(sm[bar], "bar");
sm.remove(bar);
let reuse = sm.insert("reuse"); // Space from bar reused.
assert_eq!(sm.contains_key(bar), false); // After deletion a key stays invalid.
let sec = KeyMap::new();
sec.insert(foo, "noun"); // We provide the key for secondary maps.
sec.insert(reuse, "verb");
for (key, val) in sm {
println!("{} is a {}", val, sec[key]);
}
许可证
slotmap
在Zlib许可证下发布,这是一个宽松的许可证。它是OSI和FSF批准的,并且与GPL兼容。
依赖关系
~385KB