Macro scale_bits::bits

source ·
macro_rules! bits {
    ($($val:tt),* $(,)*) => { ... };
    (__internal__ $bits:ident: 1 $(,$rest:tt)* $(,)?) => { ... };
    (__internal__ $bits:ident: 0 $(,$rest:tt)* $(,)?) => { ... };
    (__internal__ $bits:ident: $bool:expr $(,$rest:tt)* $(,)?) => { ... };
    (__internal__ $bits:ident: $(,)?) => { ... };
}
Expand description

This macro makes it trivial to construct Bits from either 0 and 1 bit literals, or booleans.

use scale_bits::bits;

// Using 1 and 0 literals to represent the bits:
let bits = bits![1,1,0,1,0,1];
assert_eq!(bits.to_vec(), vec![true, true, false, true, false, true]);

// Using true and false to represent the bits:
let bits = bits![true, true, false, true, false, true];
assert_eq!(bits.to_vec(), vec![true, true, false, true, false, true]);

// These don't have to be literals:
let t = true;
let f = false;
let bits = bits![t,t,f,t,f,t];
assert_eq!(bits.to_vec(), vec![true, true, false, true, false, true]);