[][src]Macro bitvec::bitvec

macro_rules! bitvec {
    ( $endian:path , $bits:ty ; $( $element:expr ),* ) => { ... };
    ( $endian:path , $bits:ty ; $( $element:expr , )* ) => { ... };
    ( $endian:path ; $( $element:expr ),* ) => { ... };
    ( $endian:path ; $( $element:expr , )* ) => { ... };
    ( $( $element:expr ),* ) => { ... };
    ( $( $element:expr , )* ) => { ... };
    ( $endian:path , $bits:ty ; $element:expr ; $rep:expr ) => { ... };
    ( $endian:path ; $element:expr ; $rep:expr ) => { ... };
    ( $element:expr ; $rep:expr ) => { ... };
    ( __bv_impl__ $endian:path , $bits:ty ; $( $element:expr ),* ) => { ... };
    ( __bv_impl__ $endian:path , $bits:ty ; $element:expr ; $rep:expr ) => { ... };
}

Construct a BitVec out of a literal array in source code, like vec!.

bitvec! can be invoked in a number of ways. It takes the name of a Cursor implementation, the name of a Bits-implementing fundamental, and zero or more fundamentals (integer, floating-point, or boolean) which are used to build the bits. Each fundamental literal corresponds to one bit, and is considered to represent 1 if it is any other value than exactly zero.

bitvec! can be invoked with no specifiers, a Cursor specifier, or a Cursor and a Bits specifier. It cannot be invoked with a Bits specifier but no Cursor specifier, due to overlap in how those tokens are matched by the macro system.

Like vec!, bitvec! supports bit lists [0, 1, …] and repetition markers [1; n].

Examples

use bitvec::prelude::*;

bitvec![BigEndian, u8; 0, 1];
bitvec![LittleEndian, u8; 0, 1,];
bitvec![BigEndian; 0, 1];
bitvec![LittleEndian; 0, 1,];
bitvec![0, 1];
bitvec![0, 1,];
bitvec![BigEndian, u8; 1; 5];
bitvec![LittleEndian; 0; 5];
bitvec![1; 5];