bittle 0.3.1

A library for working with small and cheap bit sets and masks
Documentation
bittle-0.3.1 has been yanked.

bittle

A library for working with small and cheap bit sets and masks.

The name bittle comes from bit and little. Small bitsets!

The bit sets are entirely defined using Copy types in Rust such as u64 or [u128; 4] who's number of bits define the capacity of the set.

use std::mem;

use bittle::Bits;

let mut set = 0u64;

assert!(!set.test(31));
set.set(31);
assert!(set.test(31));
set.unset(31);
assert!(!set.test(31));

assert_eq!(mem::size_of_val(&set), mem::size_of::<u64>());

Some other interesting operations, such as Bits::join are available, allowing bitsets to act like masks over other iterators:

use bittle::Bits;

let elements = vec![10, 48, 101];
let mut m = 0u128;

// Since set is empty, no elements are iterated over.
let mut it = m.join(&elements);
assert_eq!(it.next(), None);

m.set(1);

let mut it = m.join(&elements);
assert_eq!(it.next(), Some(&48));
assert_eq!(it.next(), None);