Expand description

This crate provides the Bitmap type as a convenient and efficient way of declaring and working with fixed size bitmaps in Rust.

Examples

let mut bitmap: Bitmap<10> = Bitmap::new();
assert_eq!(bitmap.set(5, true), false);
assert_eq!(bitmap.set(5, true), true);
assert_eq!(bitmap.get(5), true);
assert_eq!(bitmap.get(6), false);
assert_eq!(bitmap.len(), 1);
assert_eq!(bitmap.set(3, true), false);
assert_eq!(bitmap.len(), 2);
assert_eq!(bitmap.first_index(), Some(3));

X86 Arch Support

On x86 and x86_64 architectures, Bitmaps of size 256, 512, 768 and 1024 gain the load_m256i() method, which reads the bitmap into an __m256i or an array of __m256i using _mm256_loadu_si256(). Bitmaps of size 128 as well as the previous gain the load_m128i() method, which does the same for __m128i.

In addition, Bitmap<U128> and Bitmap<U256> will have From and Into implementations for __m128i and __m256i respectively.

Note that alignment is unaffected - your bitmaps will be aligned appropriately for u128, not __m128i or __m256i, unless you arrange for it to be otherwise. This may affect the performance of SIMD instructions.

Structs

A compact array of bits.
An iterator over the indices in a bitmap which are true.

Traits

A trait that defines generalised operations on a Bits::Store type.
A type level number signifying the number of bits in a bitmap.