Macro bittle::set

source ·
macro_rules! set {
    (priv $set:ident {$_:ident},) => { ... };
    (priv-range $set:ident {$set_bit:ident}, $range:expr) => { ... };
    (priv $set:ident {$($tt:tt)*}, $from:literal ..= $to:literal) => { ... };
    (priv $set:ident {$($tt:tt)*}, $from:literal ..= $to:literal, $($rest:tt)*) => { ... };
    (priv $set:ident {$($tt:tt)*}, $from:literal .. $to:literal) => { ... };
    (priv $set:ident {$($tt:tt)*}, $from:literal .. $to:literal, $($rest:tt)*) => { ... };
    (priv $set:ident {$($tt:tt)*}, $from:literal ..) => { ... };
    (priv $set:ident {$($tt:tt)*}, $from:literal .., $($rest:tt)*) => { ... };
    (priv $set:ident {$set_bit:ident}, $index:expr) => { ... };
    (priv $set:ident {$($tt:tt)*}, $index:expr, $($rest:tt)*) => { ... };
    ($($tt:tt)*) => { ... };
}
Expand description

Construct a bit set with specific values set using DefaultEndian indexing.

Examples

use bittle::Bits;

let mask: u8 = bittle::set![0, 1, 3];
assert!(mask.iter_ones().eq([0, 1, 3]));
assert_eq!(mask, 0b00001011);

Set ranges of bits:

use bittle::Bits;

let mask: u8 = bittle::set![0..=4, 6..];
assert!(mask.iter_ones().eq([0, 1, 2, 3, 4, 6, 7]));