Crate light_bitmap

Source
Expand description

A minimal, fixed-size bitmap library written in pure Rust.
no_std, no heap / alloc, no unsafe — just core.

Designed for use in embedded and resource-constrained environments.

BitMap is the main struct in this library. Its features are listed below.

§Examples

use light_bitmap::{bucket_count, BitMap};

const BIT_COUNT: usize = 10;
let mut bitmap = BitMap::<BIT_COUNT, { bucket_count(BIT_COUNT) }>::new();
assert_eq!(bitmap.popcount(), 0);
assert!(!bitmap.is_set(3));
bitmap.set(3);
assert!(bitmap.is_set(3));
assert_eq!(bitmap.popcount(), 1);

§Use Cases

  • Embedded development
  • Applications that need a compact, stack-only bitmap with no dynamic allocation
  • Timing-sensitive systems where allocation unpredictability must be avoided
  • Does not support SIMD or parallel execution, so it’s not ideal for cases where performance needs to be fully maxed out

§Features

  • #![no_std] compatible
  • Bit-level operations on a fixed number of bits
  • No heap allocations (stack-only)
  • Const-generic API: BitMap<const BIT_COUNT, const BUCKET_COUNT>
  • Efficient iteration over all, set or unset bits:
    • iter() (all bits as bools)
    • iter_ones() (indices of set bits)
    • iter_zeros() (indices of unset bits)
  • Support for bitwise ops:
    • &, |, ^, !
    • <<, >>
    • &=, |=, ^=, <<=, >>=
  • Range operations: set_range, unset_range
  • Logical operations: popcount, first_set_bit
  • Rotation support: rotate_left, rotate_right

Structs§

BitMap
The main type that stores the information.
BitMapIter
Iterator over all bits in the bitmap as bool values.
IterOnes
Iterator over the indices of set bits in the bitmap.
IterZeros
Iterator over the indices of unset bits in the bitmap.

Functions§

bucket_count
Computes the number of buckets needed to store bit_count bits.