#vec #boolean #vec-bool #bool

boolvec

A vector of boolean stored contiguously in memory

4 releases

0.2.6 Jun 28, 2020
0.2.5 Jun 27, 2020
0.1.0 Jun 24, 2020

#1293 in Data structures

Download history 320/week @ 2025-08-05 384/week @ 2025-08-12 333/week @ 2025-08-19 567/week @ 2025-08-26 484/week @ 2025-09-02 474/week @ 2025-09-09 538/week @ 2025-09-16 671/week @ 2025-09-23 471/week @ 2025-09-30 505/week @ 2025-10-07 578/week @ 2025-10-14 597/week @ 2025-10-21 648/week @ 2025-10-28 640/week @ 2025-11-04 572/week @ 2025-11-11 493/week @ 2025-11-18

2,448 downloads per month
Used in 3 crates (via annonars)

MIT license

54KB
1.5K SLoC

This crate provides the BoolVec structure. This is basically a wrapper around a Vec<u8> where each byte is interpreted as 8 bool.

Quick Note: Do what you want with this code, I don't really care :)

Example

// Create a new `BoolVec`
use boolvec::BoolVec;

let mut vec = BoolVec::new();

// You can push data onto it
vec.push(true);
vec.push(false);

// ... retreve it
assert_eq!(vec.get(0), Some(true));
assert_eq!(vec.get(3), None);

// ... update it
vec.set(0, false);
assert_eq!(vec.get(0), Some(false));

// You can get a reference to an unaligned boolean.
let mut boolean = vec.get_mut(1).unwrap();
assert_eq!(boolean.get(), false);

boolean.set(true);
assert_eq!(vec.get(1), Some(true));

// You can also iterate over this data (mutably or not).
let mut iter = vec.iter_mut();

iter.next().unwrap().set(true);
iter.next().unwrap().set(false);

let mut iter = vec.iter();

assert_eq!(iter.next(), Some(true));
assert_eq!(iter.next(), Some(false));
assert_eq!(iter.next(), None);

No runtime deps