21次发布
0.4.3 | 2021年12月8日 |
---|---|
0.4.2 | 2021年11月27日 |
0.3.6 | 2021年10月2日 |
0.3.5 | 2021年2月23日 |
0.1.1 | 2019年11月6日 |
#1472 in 数据结构
4,557 每月下载量
用于 11 个crate(7 直接使用)
220KB
5.5K SLoC
Vec-collections —

关于
此crate提供(集合和映射)包裹SmallVec。
用例
小型集合
非常频繁地遇到拥有平均只有非常少数元素的集合。如果你事先知道最大大小甚至最大 典型 大小,你可以使用这个crate来存储这样的集合而无需分配。对于更多元素,底层 SmallVec 将在堆上作为单个分配分配元素。
读密集型集合
另一个非常常见的模式是,你有一个可能很大的集合,它一次创建并长时间只读使用。例如查找表。在这些情况下,添加单个新元素比紧凑的内存表示和查找性能更重要。此crate提供了只有非常小的常量开销的简洁集合。
性能
对于批量创建以及查找的性能优于 BTreeMap/BTreeSet,并且与具有便宜 Ord 实例的类型(如原始类型)和中小尺寸的类型(如HashMap/HashSet)相当。但是,对于从大型集合中插入或删除单个元素的性能较差。这不是预期的使用场景。
集合概述
VecSet
提供由元素 SmallVec 支持的集合。
VecMap
提供由键值对 SmallVec 支持的映射。
TotalVecSet
一个带有额外标志的VecSet,以支持否定操作。这样就可以表示例如除了1之外的所有u64的集合。
TotalVecMap
一个带有额外默认值的VecMap,使得查找成为一个全函数。
[RadixTree]
一个通用的基数树,提供不同版本
不安全
原地操作使用不安全代码。如果您觉得这是问题,请告诉我,我可以将它们隐藏在功能背后。
依赖关系
~0.4–1.2MB
~21K SLoC