4个版本
| 0.1.3 | 2022年11月30日 |
|---|---|
| 0.1.2 | 2022年11月30日 |
| 0.1.1 | 2022年11月30日 |
| 0.1.0 | 2022年11月30日 |
2124 在 算法 中排名
每月 下载 24 次
16KB
280 行
一种用于存储固定大小布尔数组以优化空间的类型
受C++的std::vector实现启发
概述
compact_bitset 添加了一个新的容器类型,CompactBitset。一个 CompactBitset 存储布尔变量,每个布尔变量使用一个位。它适用于需要布尔数组但又不希望使用 Vec<bool> 或切片的情况,因为它们的空间要求较高。该 CompactBitset 将每个布尔变量使用的空间减少到原来的八分之一。
详细信息
CompactBitset 使用代理类型 BitRef 和 BitRefMut 用于索引操作。
这两个类型都解引用到 bool 并实现了与 bool 及彼此的比较。
向 BitRefMut 写入将改变其在 CompactBitset 中象征性引用的位。
BitRef 和 BitRefMut 包含对其父 CompactBitset 的引用。因此,可以从 CompactBitset 借出任意数量的 BitRef,但一次只能有一个 BitRefMut 是活动的。这使得 BitRef 和 BitRefMut 能够利用引用的安全性保证。
BitIter 允许用户通过包装一个其索引增加的 BitRef 来不可变地迭代 CompactBitset。它包含所有标准 Iterator 功能。
BitIterMut 可能在未来,但目前还没有成功创建一个不使用 unsafe 的实现。
依赖项
~155KB