6个版本

使用旧版Rust 2015

0.1.5 2019年11月29日
0.1.4 2019年11月20日
0.1.1 2016年8月18日

#512 in 数据结构

Download history 168/week @ 2024-03-25 223/week @ 2024-04-01 195/week @ 2024-04-08 540/week @ 2024-04-15 448/week @ 2024-04-22 322/week @ 2024-04-29 482/week @ 2024-05-06 392/week @ 2024-05-13 256/week @ 2024-05-20 170/week @ 2024-05-27 358/week @ 2024-06-03 365/week @ 2024-06-10 265/week @ 2024-06-17 384/week @ 2024-06-24 709/week @ 2024-07-01 679/week @ 2024-07-08

2,074 每月下载量
用于 9 个crate(3 个直接使用)

MIT 协议

39KB
960

bitvector,Rust语言中的一个简单的位向量实现

这个crate是对librustc_data_structures/bitvec.rs的修改,以支持集合运算符。

文档

访问在线文档或运行

cargodoc

以生成本地副本。

如何使用

将以下行添加到您的Cargo.toml文件中的[dependencies]

bitvector = 0.1

然后您可以使用BitVector

extern crate bitvector;
use bitvector::*;

fn main() {
    let mut test_vec = BitVector::new(50);
    for i in vec![0,1,3,5,7,11,13,17,19,23] { test_vec.insert(i); }

    let mut test_vec2 = BitVector::new(50);
    for i in vec![3,5,9,13,19,40,45] { test_vec2.insert(i); }

    // union of test_vec and test_vec2
    // other possible operators: intersection, difference
    let union = test_vec.union(&test_vec2);


    assert!(union.contains(3));
    assert!(union.contains(5));
    assert!(union.contains(13));
    assert!(union.contains(19));
    assert!(union.contains(9));
    assert!(union.contains(40));

    // all the operators also have `*_inplace` variants
    // which directly modify `self` to avoid extra memory operations.
    test_vec.union_inplace(&test_vec2);

    assert!(test_vec.contains(3));
    assert!(test_vec.contains(5));
    assert!(test_vec.contains(13));
    assert!(test_vec.contains(19));
    assert!(test_vec.contains(0));
    assert!(test_vec.contains(9));
    assert!(test_vec.contains(40));
}

与std/collections/Set的性能比较

test bench::bench_bitset_operator         ... bench:         222 ns/iter (+/- 22)
test bench::bench_bitset_operator_inplace ... bench:         122 ns/iter (+/- 5)
test bench::bench_btreeset_operator       ... bench:       1,675 ns/iter (+/- 115)
test bench::bench_hashset_operator        ... bench:       1,748 ns/iter (+/- 37)

许可

MIT

无运行时依赖