Macro nom::length_data[][src]

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

length_data!(I -> IResult<I, nb>) => O

length_data gets a number from the first parser, then takes a subslice of the input of that size and returns that subslice

use nom::number::complete::be_u8;
named!(parser, length_data!(be_u8));

assert_eq!(parser(&b"\x06abcabcabc"[..]), Ok((&b"abc"[..], &b"abcabc"[..])));
assert_eq!(parser(&b"\x06abc"[..]), Err(Err::Incomplete(Needed::Size(6))));