Add this to your Cargo.toml:
[dependencies] bit-set = "0.8"
Since Rust 2018, extern crate
is no longer mandatory. If your edition is old (Rust 2015), add this to your crate root:
extern crate bit_set;
If you want to use serde
, enable it with the serde
feature:
[dependencies] bit-set = { version = "0.8", features = ["serde"] }
If you want to use bit-set in a program that has #![no_std]
, just drop default features:
[dependencies] bit-set = { version = "0.8", default-features = false }
An implementation of a set using a bit vector as an underlying representation for holding unsigned numerical elements.
It should also be noted that the amount of storage necessary for holding a set of objects is proportional to the maximum of the objects when viewed as a usize
.
use bit_set::BitSet; // It's a regular set let mut s = BitSet::new(); s.insert(0); s.insert(3); s.insert(7); s.remove(7); if !s.contains(7) { println!("There is no 7"); } // Can initialize from a `BitVec` let other = BitSet::from_bytes(&[0b11010000]); s.union_with(&other); // Print 0, 1, 3 in some order for x in s.iter() { println!("{}", x); } // Can convert back to a `BitVec` let bv = s.into_bit_vec(); assert!(bv[3]);
Dual-licensed for compatibility with the Rust project.
Licensed under the Apache License Version 2.0: http://www.apache.org/licenses/LICENSE-2.0, or the MIT license: http://opensource.org/licenses/MIT, at your option.