2 个版本
0.1.1 | 2022 年 3 月 7 日 |
---|---|
0.1.0 | 2022 年 3 月 6 日 |
#1521 in 算法
每月 21 次下载
1MB
869 行
BVRS
BVRS 是一个轻量级的 Rust 库,用于位向量 Rank&Select 操作,并与泛型稀疏数组实现相结合。描述
该库是 CMSC858D - 算法、数据结构和高吞吐量基因组学推理课程作业的一部分。
库的官方版本托管在 github 上,地址为 此仓库,而 crates.io 上的版本托管在 此页面。
安装
您可以从 github 下载源代码,并使用 cargo build
构建项目,或将它作为依赖项添加到您的项目中。
用法
以下是一些实例化和使用给定构造的方法。
位向量
use bvrs::BitVec;
let size = 16;
let b1 = BitVec::new_with_random(size);
let b2 = BitVec::new_with_zeros(size);
let b3 = BitVec::new_with_vec(vec![0b10010001, 0b10000001]);
let b4 = BitVec::new(size); // uses new with zeros
let b5 = b1 + b2;
let b6 = b1.incr();
let b7 = b1.concat(&b2);
let b8 = b1.extract(0, 7);
let bit = b1.get(2);
Rank 支持
use bvrs::BitVec;
use bvrs::RankSupport;
let size = 16;
let b1 = BitVec::new_with_random(size);
let r = RankSupport::new(&b);
let index = 3;
let res = r.rank1(index);
let res_prime = RankSupport::dummy_rank(&b, index);
r.save("example.txt");
let r2 = RankSupport::load("example.txt".to_owned()).unwrap();
Select 支持
use bvrs::BitVec;
use bvrs::RankSupport;
use bvrs::SelectSupport;
let b = BitVec::new_with_random(size);
let r = RankSupport::new(&b);
let s = SelectSupport::new(Cow::Borrowed(&r));
let select = s.select1(3);
稀疏数组
use bvrs::SparseArray;
let size = 32;
let mut sa: SparseArray<String> = SparseArray::new(size);
sa.append("alp".to_owned(), 3);
let res = sa.get_at_index(3).unwrap();
assert_eq!(*res, "alp".to_owned());