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