#位向量 #bitvec #生物信息学

mmap-bitvec

一个用于处理内存映射文件支持的位向量的库

2个版本

0.4.1 2023年10月5日
0.4.0 2022年11月16日

#172 in 生物学

Download history 32/week @ 2024-03-29 12/week @ 2024-04-05 20/week @ 2024-05-17 5/week @ 2024-05-24 2/week @ 2024-06-14 12/week @ 2024-06-21 59/week @ 2024-07-05 44/week @ 2024-07-12

每月115次下载
用于 bfield

MIT 协议

41KB
845

mmap-bitvec

ci Crates.io Version

mmap-bitvec 是一个用于处理内存映射文件支持的位向量的库。它包含了一个基于此类位向量的简单布隆过滤器。

示例

使用内存映射位向量

    // Build an in-memory bit-vector with a capacity of 128 bits.
    use mmap_bitvec::{MmapBitVec, BitVector};

    let mut bitvec = MmapBitVec::from_memory(128).unwrap();
    bitvec.set(2, true);
    assert!(bitvec.get(2));
    assert_eq!(bitvec.get_range(0..8), 0b00100000);

    // Write the bit-vector to disk, passing in `None` where an optional magic bytes arg can be set
    let dir = tempfile::tempdir().unwrap();
    bitvec.save_to_disk(dir.path().join("test"), None, &[])
        .unwrap();
    let f = MmapBitVec::open(dir.path().join("test"), None, false).unwrap();
    assert_eq!(f.get(2), true);

使用布隆过滤器

    use mmap_bitvec::{BloomFilter};
    // Create a Bloom filter with a capacity of 100 bits that uses 2 hash functions on each insert.
    let mut filter = BloomFilter::new(Some("./test.bloom"), 100, 2).unwrap();
    let (a, b) = (1, 2);
    assert!(!filter.contains(a));
    assert!(!filter.contains(b));

    filter.insert(b);
    assert!(!filter.contains(a));
    assert!(filter.contains(b));

许可证

本项目采用 MIT许可证

依赖项

~180KB