11 个版本
使用旧的 Rust 2015
0.3.7 | 2018年1月10日 |
---|---|
0.3.6 | 2018年1月1日 |
0.3.5 | 2017年12月30日 |
0.3.2 | 2017年11月12日 |
0.1.0 | 2015年12月20日 |
#8 in #key-index
49 每月下载量
用于 dnscache
53KB
1.5K SLoC
Compactmap - 使用 usize 作为键类型并维护内部链表以跟踪删除节点的基于 Vec 的映射。
插入新值时,您不需要选择键。您可以删除任何条目。
CompactMap 的功能和结构几乎与 Slab 相同,除了缺少缓存的长度和更多功能。如果我知道 Slab 的话,CompactMap 就不会出现了。
待办事项
- 更彻底的测试
- 条目(它真的需要吗?)
许可协议是 MIT 或 Apache,与 Rust 本身一样。
lib.rs
:
一个类似映射的数据结构,在插入时为小整数键。删除条目的键被重用于新的插入。底层数据存储在向量中,键只是该向量的索引。主要技巧是维护空闲索引的内部链表以供重用。
Serde 支持。如果需要在序列化时预先计算长度(例如,对于 bincode),请使用 serde_ser_len
功能。
如果您担心由于这些 usize
而失去严格的类型优势,可以使用 特殊包装器
另请参阅: Slab
依赖项
~170KB