Macro nom::bits[][src]

macro_rules! bits {
    ($i:expr, $submac:ident!( $($args:tt)* )) => { ... };
    ($i:expr, $f:expr) => { ... };
}

Transforms its byte slice input into a bit stream for the underlying parser. This allows the given bit stream parser to work on a byte slice input.

Signature: bits!( parser ) => ( &[u8], (&[u8], usize) -> IResult<(&[u8], usize), T> ) -> IResult<&[u8], T>

 named!( take_4_bits<u8>, bits!( take_bits!( 4u8 ) ) );

 let input = vec![0xAB, 0xCD, 0xEF, 0x12];
 let sl    = &input[..];

 assert_eq!(take_4_bits( sl ), Ok( (&sl[1..], 0xA) ));
 assert_eq!(take_4_bits( &b""[..] ), Err(Err::Incomplete(Needed::Size(1))));