Macro bitvec::bits [−][src]
macro_rules! bits {
(mut $order : ident, $store : ident ; $($val : expr), * $(,) ?) => { ... };
(mut $order : path, $store : ident ; $($val : expr), * $(,) ?) => { ... };
(mut $order : ident ; $($val : expr), * $(,) ?) => { ... };
(mut $order : path ; $($val : expr), * $(,) ?) => { ... };
(mut $($val : expr), * $(,) ?) => { ... };
(mut $order : ident, $store : ident ; $val : expr ; $len : expr) => { ... };
(mut $order : path, $store : ident ; $val : expr ; $len : expr) => { ... };
(mut $order : ident ; $val : expr ; $len : expr) => { ... };
(mut $order : path ; $val : expr ; $len : expr) => { ... };
(mut $val : expr ; $len : expr) => { ... };
($order : ident, $store : ident ; $($val : expr), * $(,) ?) => { ... };
($order : path, $store : ident ; $($val : expr), * $(,) ?) => { ... };
($order : ident ; $($val : expr), * $(,) ?) => { ... };
($order : path ; $($val : expr), * $(,) ?) => { ... };
($($val : expr), * $(,) ?) => { ... };
($order : ident, $store : ident ; $val : expr ; $len : expr) => { ... };
($order : path, $store : ident ; $val : expr ; $len : expr) => { ... };
($order : ident ; $val : expr ; $len : expr) => { ... };
($order : path ; $val : expr ; $len : expr) => { ... };
($val : expr ; $len : expr) => { ... };
}
Expand description
Constructs a BitSlice
handle out of a literal array in source code, like
vec!
.
bits!
can be invoked in a number of ways. It takes the name of a BitOrder
implementation, the name of a BitStore
-implementing core type (which can be
any of the fundamental integers, their Cell
wrappers, or their Atomic
sibling types), and zero or more expressions which are used to build the bits.
Each value expression corresponds to one bit. If the expression evaluates to
0
, it is the zero bit; otherwise, it is the 1
bit.
bits!
can be invoked with no type specifiers, a BitOrder
specifier only, or
both a BitOrder
and a BitStore
specifier. It cannot be invoked with a
BitStore
but no BitOrder
, as the macro grammar is incapable of
distinguishing between these two.
In addition, a mut
marker may be used as the first argument to produce an
&mut BitSlice
handle instead of a &BitSlice
handle.
Like vec!
, bits!
supports bit lists [0, 1, …]
and repetition markers
[1; n]
.
Examples
use bitvec::prelude::*;
bits![Msb0, u8; 0, 1];
bits![mut Lsb0, u8; 0, 1,];
bits![Msb0; 0, 1];
bits![mut Lsb0; 0, 1,];
bits![0, 1];
bits![mut 0, 1,];
bits![0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0];
bits![Msb0, u8; 1; 5];
bits![mut Lsb0; 0; 5];
bits![1; 5];
bits![mut LocalBits; 0, 1,];