#稀疏数组 #位向量 #泛型 #操作 #托管 #耦合 #秩选择

bvrs

BVRS 是一个轻量级的 Rust 库,用于位向量 Rank&Select 操作,并与泛型稀疏数组实现相结合

2 个版本

0.1.1 2022 年 3 月 7 日
0.1.0 2022 年 3 月 6 日

#1521 in 算法

每月 21 次下载

MIT/Apache

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());

依赖项