#hash-set #bitset #container #bitvec #no-std

no-std tibitset

TiBitSet是HashSet的一个简单的位集合替代品

1个不稳定版本

使用旧的Rust 2015

0.1.0 2021年10月25日

#2229 in 数据结构

MIT/Apache

52KB
1.5K SLoC

tibitset

一个简单的Rust位集合容器,旨在替代HashSet

请在此处阅读API文档

build_status crates

哲学

此包是从fixedbitset分叉而来,增加了对位索引类型的泛型支持。这与TiVecVec所做的类似,你可以使用自定义的索引类型(非usize)来使用这个集合。它也是一个几乎是即插即用的HashSet替代品,当你的索引空间有限且集合大部分已满时,你可以使用它。

用法

[dependencies]
tibitset = "0.1"
use tibitset::TiBitSet;
use std::convert::TryInto;

struct CustomIndex(pub u16);

impl From<usize> for CustomIndex {
    fn from(value: usize) -> Self {
        CustomIndex(value.try_into().expect("value too large to fit u16"))
    }
}
impl Into<usize> for CustomIndex {
    fn into(self) -> usize {
        self.0.into()
    }
}

let fb: TiBitSet::<CustomIndex>::with_capacity(10);
fb.set(CustomIndex(2), true);
assert!(!fb.contains(CustomIndex(1)));
assert!(fb.contains(CustomIndex(2)));

许可证

双许可,以与Rust项目兼容。

许可根据Apache License,版本2.0MIT许可证,任选其一。此文件不得根据这些条款复制、修改或分发。

依赖项

~175KB