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

MIT OR Apache-2.0 OR Zlib

130KB
2K SLoC

进入数据动物园

收集了一些足够有趣的、可以放入自由放养围栏的数据结构。

特性

这是一个多映射、锯齿状数组、位集合及其组合的集合。

亮点

  • 一个无存储依赖的 Bitset
  • 一个无存储依赖的 JaggedArray
  • 一个类似于 bitpackingbitvec 和其他位打包Rust库的 PackedIntArray
  • 双向只读多映射:BimultiMap
  • enumset 键数据结构。

查看 rustdoc 文档以获取详细信息。

Cargo功能

  • enumset:启用 enumset 依赖项和 EnumBitMatrixEnumMultimap 数据结构。
  • 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