#small-vec #radix-tree #succinct #array #vector

vec-collections

Rust集合,是对smallvec的newtype包装

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 数据结构

Download history 2511/week @ 2024-03-29 2755/week @ 2024-04-05 1511/week @ 2024-04-12 2232/week @ 2024-04-19 1063/week @ 2024-04-26 1969/week @ 2024-05-03 1885/week @ 2024-05-10 907/week @ 2024-05-17 750/week @ 2024-05-24 939/week @ 2024-05-31 2476/week @ 2024-06-07 1714/week @ 2024-06-14 924/week @ 2024-06-21 1296/week @ 2024-06-28 1023/week @ 2024-07-05 1099/week @ 2024-07-12

4,557 每月下载量
用于 11 个crate(7 直接使用)

MIT/Apache

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