pub fn all<'a, A, I>(parsers: &'a mut [impl Parser<A, I>]) -> impl Parser<Vec<A>, I> + 'a {
    move |input: I| {
        let output = Vec::<A>::with_capacity(parsers.len());
        parsers
            .iter_mut()
            .try_fold((output, input), |(mut output, input), parser| {
                let (value, input) = parser.parse(input)?;
                output.push(value);
                Some((output, input))
            })
    }
}
/// Applies every parser in a slice, from left to right, and returns the output from all of them.
/// If one parser fails, the whole sequence is considered failed.
Applies every parser in a slice, from left to right, and returns the output from all of them.
If one parser fails, the whole sequence is considered failed.
Applies every parser in a slice from left to right and returns the output from all of them . If one parser fails the whole sequence is considered failed .
pub fn all<'a, A, I>(parsers: &'a mut [impl Parser<A, I>]) -> impl Parser<Vec<A>, I> + 'a {
    move |input: I| {
        let output = Vec::<A>::with_capacity(parsers.len());
        parsers
            .iter_mut()
            .try_fold((output, input), |(mut output, input), parser| {
                let (value, input) = parser.parse(input)?;
                output.push(value);
                Some((output, input))
            })
    }
}
pub fn all < ' a , A , I > ( parsers : & ' a mut [ impl Parser < A , I > ] ) -> impl Parser < Vec < A > , I > + ' a { move | input : I | { let output = Vec :: < A > :: with_capacity ( parsers . len ( ) ) ; parsers . iter_mut ( ) . try_fold ( ( output , input ) , | ( mut output , input ) , parser | { let ( value , input ) = parser . parse ( input ) ? ; output . push ( value ) ; Some ( ( output , input ) ) } ) } }
Applies every parser in a slice, from left to right, and returns the output from all of them.
Applies every parser in a slice from left to right and returns the output from all of them .
parsers
&'a mut [impl Parser<A, I>]