7个版本 (破坏性)
0.7.0 | 2023年10月28日 |
---|---|
0.6.0 | 2023年9月17日 |
0.5.0 | 2023年9月17日 |
0.4.0 | 2023年9月17日 |
0.1.0 | 2023年8月6日 |
#894 in 数据结构
130KB
2K SLoC
进入数据动物园
收集了一些足够有趣的、可以放入自由放养围栏的数据结构。
特性
这是一个多映射、锯齿状数组、位集合及其组合的集合。
亮点
- 一个无存储依赖的
Bitset
。 - 一个无存储依赖的
JaggedArray
。 - 一个类似于
bitpacking
、bitvec 和其他位打包Rust库的
PackedIntArray
。 - 双向只读多映射:
BimultiMap
enumset
键数据结构。
查看 rustdoc
文档以获取详细信息。
Cargo功能
enumset
:启用enumset
依赖项和EnumBitMatrix
、EnumMultimap
数据结构。smallvec
:(默认关闭)在SmallVec
上实现bitset::ExtendBlocks
。
独特特性
JaggedArray
对存储类型进行了泛型化,这意味着您可以利用自己的专用slice
实现,如SmallVec
,或者存储在堆栈上的固定大小数组(通常在您有一个固定高度矩阵时很有用)。Bitset
同样对存储类型进行了泛型化,具有相同的含义。
限制
- 数据结构完全不处理
Drop
类型。 - 数据结构未针对大小
> u32::MAX
进行测试 - 在这些情况下,会尽力引发恐慌,但谁也不知道
- 通常假设
size_of(usize) >= size_of(u32)
- 与其他类似crate相比,尚未经过充分测试和基准测试。
- 没有
#[no_std]
,但我看不出为什么不能将其添加为功能。 - 依赖于
sorted-iter
,无法禁用依赖。 Bitset
通常无法区分“在界限内禁用”和“超出界限”。
历史
这最初是为 cuicui_richtext
项目构建的,但后来对其他事物也很有用,因此它被单独发布。
许可证
您可以在以下任何许可证下使用 datazoo
- ZLib
- MIT
- Apache 2.0
依赖项
~1.8–2.5MB
~51K SLoC