pub fn length_prefix<Input, P>(len: P) -> length_prefix<Input, P>
where <Input as StreamOnce>::Error: ParseError<<Input as StreamOnce>::Token, <Input as StreamOnce>::Range, <Input as StreamOnce>::Position>, Input: Stream + RangeStream, P: Parser<Input>, usize: TryFrom<P::Output>, <usize as TryFrom<P::Output>>::Error: StdError + Send + Sync + 'static,
Expand description

Takes a parser which parses a length then extracts a range of that length and returns it. Commonly used in binary formats

let mut input = Vec::new();
input.extend_from_slice(&3u16.to_be_bytes());
input.extend_from_slice(b"1234");

let mut parser = length_prefix(be_u16());
let result = parser.parse(&input[..]);
assert_eq!(result, Ok((&b"123"[..], &b"4"[..])));