Skip to main content

bit_vec

Macro bit_vec 

Source
macro_rules! bit_vec {
    () => { ... };
    (false; $n:expr) => { ... };
    (0; $n:expr) => { ... };
    (true; $n:expr) => { ... };
    (1; $n:expr) => { ... };
    ($($x:expr),+ $(,)?) => { ... };
}
Expand description

Convenient, vec!-like macro to initialize bit vectors.

  • bit_vec![] creates an empty bit vector.

  • bit_vec![false; n] or bit_vec![0; n] creates a bit vector of length n with all bits set to false.

  • bit_vec![true; n] or bit_vec![1; n] creates a bit vector of length n with all bits set to true.

  • bit_vec![b₀, b₁, b₂, …] creates a bit vector with the specified bits, where each bᵢ can be any expression that evaluates to a boolean or integer (0 for false, non-zero for true).

§Examples

use sux::prelude::*;
use sux::traits::BitVecOps;

// Empty bit vector
let b = bit_vec![];
assert_eq!(b.len(), 0);

// 10 bits set to true
let b = bit_vec![true; 10];
assert_eq!(b.len(), 10);
assert_eq!(b.iter().all(|x| x), true);
let b = bit_vec![1; 10];
assert_eq!(b.len(), 10);
assert_eq!(b.iter().all(|x| x), true);

// 10 bits set to false
let b = bit_vec![false; 10];
assert_eq!(b.len(), 10);
assert_eq!(b.iter().any(|x| x), false);
let b = bit_vec![0; 10];
assert_eq!(b.len(), 10);
assert_eq!(b.iter().any(|x| x), false);

// Bit list
let b = bit_vec![0, 1, 0, 1, 0, 0];
assert_eq!(b.len(), 6);
assert_eq!(b[0], false);
assert_eq!(b[1], true);
assert_eq!(b[2], false);
assert_eq!(b[3], true);
assert_eq!(b[4], false);
assert_eq!(b[5], false);