macro_rules! bit_field_vec {
($w:expr) => { ... };
($w:expr; $n:expr; $v:expr) => { ... };
($w:expr => $v:expr; $n:expr) => { ... };
($w:expr; $($x:expr),+ $(,)?) => { ... };
}Expand description
Convenient, vec!-like macro to initialize usize-based bit-field
vectors.
-
bit_field_vec![width]: creates an empty bit-field vector of given bit width. -
bit_field_vec![width => value; length]: creates a bit-field vector of given bit width and length, with all entries set tovalue. -
bit_field_vec![width; v₀, v₁, … ]: creates a bit-field vector of given bit width with entries set tov₀,v₁, ….
§Examples
use sux::prelude::*;
use bit_field_slice::*;
use value_traits::slices::*;
// Empty bit field vector of bit width 5
let b = bit_field_vec![5];
assert_eq!(b.len(), 0);
assert_eq!(b.bit_width(), 5);
// 10 values of bit width 6, all set to 3
let b = bit_field_vec![6 => 3; 10];
assert_eq!(b.len(), 10);
assert_eq!(b.bit_width(), 6);
assert_eq!(b.iter().all(|x| x == 3), true);
// List of values of bit width 10
let b = bit_field_vec![10; 4, 500, 2, 0, 1];
assert_eq!(b.len(), 5);
assert_eq!(b.bit_width(), 10);
assert_eq!(b.index_value(0), 4);
assert_eq!(b.index_value(1), 500);
assert_eq!(b.index_value(2), 2);
assert_eq!(b.index_value(3), 0);
assert_eq!(b.index_value(4), 1);