1个不稳定版本
使用旧的Rust 2015
0.1.0 | 2021年10月25日 |
---|
#2229 in 数据结构
52KB
1.5K SLoC
tibitset
一个简单的Rust位集合容器,旨在替代HashSet
请在此处阅读API文档
哲学
此包是从fixedbitset分叉而来,增加了对位索引类型的泛型支持。这与TiVec为Vec
所做的类似,你可以使用自定义的索引类型(非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.0或MIT许可证,任选其一。此文件不得根据这些条款复制、修改或分发。
依赖项
~175KB