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