Macro peel_ip::prelude::length_value []

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

length_value!(I -> IResult<I, nb>, I -> IResult<I,O>) => I -> IResult<I, Vec<O>> gets a number from the first parser, takes a subslice of the input of that size, then applies the second parser on that subslice. If the second parser returns Incomplete, length_value will return an error