macro_rules! bitvec {
( $endian:ident , $bits:ty ; $( $element:expr ),* ) => { ... };
( $endian:ident , $bits:ty ; $( $element:expr , )* ) => { ... };
( $endian:ident ; $( $element:expr ),* ) => { ... };
( $endian:ident ; $( $element:expr , )* ) => { ... };
( $( $element:expr ),* ) => { ... };
( $( $element:expr , )* ) => { ... };
( $endian:ident , $bits:ty ; $element:expr ; $rep:expr ) => { ... };
( $endian:ident ; $element:expr ; $rep:expr ) => { ... };
( $element:expr ; $rep:expr ) => { ... };
( __bv_impl__ $endian:ident , $bits:ty ; $( $element:expr ),* ) => { ... };
( __bv_impl__ $endian:ident , $bits:ty ; $element:expr; $rep:expr ) => { ... };
}
Expand description
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 an
Endian
implementation, the name of a Bits
-implementing primitive, and
zero or more primitives (integer, floating-point, or bool) which are used to
build the bits. Each primitive 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, an Endian
specifier, or an
Endian
and a Bits
specifier. It cannot be invoked with a Bits
specifier but no Endian
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]
.
All Syntaxes
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];