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]orbit_vec![0; n]creates a bit vector of lengthnwith all bits set tofalse. -
bit_vec![true; n]orbit_vec![1; n]creates a bit vector of lengthnwith all bits set totrue. -
bit_vec![b₀, b₁, b₂, …]creates a bit vector with the specified bits, where eachbᵢcan be any expression that evaluates to a boolean or integer (0 forfalse, non-zero fortrue).
§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);