1 个不稳定版本
使用旧的 Rust 2015
0.3.11 | 2023年7月7日 |
---|
#3 在 #c-roaring
1MB
15K SLoC
croaring-rs
CRoaring (C/C++ 实现,位于 https://github.com/RoaringBitmap/CRoaring) 的 Rust 封装
原始的 Java 版本可在 https://github.com/RoaringBitmap/RoaringBitmap 找到
使用示例
use croaring::Bitmap;
let mut rb1 = Bitmap::create();
rb1.add(1);
rb1.add(2);
rb1.add(3);
rb1.add(4);
rb1.add(5);
rb1.add(100);
rb1.add(1000);
rb1.run_optimize();
let mut rb2 = Bitmap::create();
rb2.add(3);
rb2.add(4);
rb2.add(1000);
rb2.run_optimize();
let mut rb3 = Bitmap::create();
assert_eq!(rb1.cardinality(), 7);
assert!(rb1.contains(3));
rb1.and_inplace(&rb2);
rb3.add(5);
rb3.or_inplace(&rb1);
let mut rb4 = Bitmap::fast_or(&[&rb1, &rb2, &rb3]);
rb1.and_inplace(&rb2);
println!("{:?}", rb1);
rb3.add(5);
rb3.or_inplace(&rb1);
println!("{:?}", rb1);
rb3.add(5);
rb3.or_inplace(&rb1);
println!("{:?}", rb3.to_vec());
println!("{:?}", rb3);
println!("{:?}", rb4);
rb4 = Bitmap::fast_or(&[&rb1, &rb2, &rb3]);
println!("{:?}", rb4);
本地构建
git clone --recursive https://github.com/saulius/croaring-rs/
cd croaring-rs
cargo build
在 Rust 稳定版/beta版/nightly版和 LLVM 版本 3.8 上进行了测试。
测试
运行单元测试和文档测试
cargo test
运行基准测试套件(目前仅在 Rust nightly 工具链上运行)
cargo bench
文档
依赖项
~0–2MB
~39K SLoC