1 unstable release
Uses old Rust 2015
0.1.0 | Oct 25, 2021 |
---|
#2229 in Data structures
52KB
1.5K
SLoC
tibitset
A simple bitset container for Rust, meant to be a replacement for HashSet
Please read the API documentation here
Philosophy
This crate is a fork from fixedbitset with added genericity over its
bit indexing type. It is the same idea like TiVec is for Vec
,
a collection which you can use with a custom index type which is not usize
.
It's also a nearly-drop-in replacement for HashSet
which you can use when you have a limited index space
with mostly full collections.
Usage
[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)));
License
Dual-licensed to be compatible with the Rust project.
Licensed under the Apache License, Version 2.0 or the MIT license, at your option. This file may not be copied, modified, or distributed except according to those terms.
Dependencies
~175KB