2 个版本
0.1.1 | 2019 年 1 月 16 日 |
---|---|
0.1.0 | 2019 年 1 月 14 日 |
在 压缩 中排名 309
每月下载量 74
在 5 个 (3 个直接) 包中使用
66KB
1.5K SLoC
rust-dense-bitset
高效的灵活的自包含 Rust 位集合库。
该库仅适用于安全的 Rust,文档齐全,并在可能的情况下使用最有效的算法。
实现
DenseBitSet
是一个紧凑的 64 位位集合,特别支持DenseBitSetExtended
实现了相同的功能,并根据需要扩展位集合以适应所需的位数。内存可以预先分配,并且仅在必要时才执行新的分配。
用法
use rust_dense_bitset::{BitSet, DenseBitSetExtended};
let mut bs = DenseBitSetExtended::from_string(
String::from("f001eddadf411eddec0de5ca1ab1ec0feefeeb1e01dc0b01"),
16,
);
let bs2 = DenseBitSetExtended::from_string(
String::from("0J2aG5BaMRS443FEBRGS5DTMV2A"),
32
);
bs = bs.rotr(17) | (bs2 << 43);
bs.set_bit(123, true);
println!("{}", bs.subset(3, 64).to_string());
已知限制和注意事项
-
该数据结构不使用压缩,因此不适合稀疏位集合:在这种情况下,可以考虑使用类似 hibitset 的库。
-
clippy
在位移运算符中错误地报告了有关 "可疑运算符" 的问题。(为了避免错误,我们禁用了 suspicious_op_assign_impl 精简规则)
运行测试
每个单独的函数都会进行测试。使用以下命令运行测试:
cargo test
运行基准测试
使用 Criterion
依赖关系提供精确的基准测试。可以使用以下命令运行基准测试:
cargo bench
文档
使用以下命令生成文档:
cargo doc
许可协议
本项目采用 MIT 许可协议 - 有关详细信息,请参阅 LICENSE.md 文件