pub fn into<I, O1, O2, E1, E2, F>(
    parser: F
) -> impl FnMut(I) -> IResult<I, O2, E2> where
    O1: Into<O2>,
    E1: Into<E2>,
    E1: ParseError<I>,
    E2: ParseError<I>,
    F: Parser<I, O1, E1>, 
Expand description

automatically converts the child parser’s result to another type

it will be able to convert the output value and the error value as long as the Into implementations are available

use nom::combinator::into;
use nom::character::complete::alpha1;

 fn parser1(i: &str) -> IResult<&str, &str> {
   alpha1(i)
 }

 let mut parser2 = into(parser1);

// the parser converts the &str output of the child parser into a Vec<u8>
let bytes: IResult<&str, Vec<u8>> = parser2("abcd");
assert_eq!(bytes, Ok(("", vec![97, 98, 99, 100])));