[−][src]Function gchemol_parser::parsers::map_res
pub fn map_res<I, O1, O2, E, E2, F, G>(first: F, second: G) -> impl Fn(I) where
E: ParseError<I>,
F: Fn(I) -> Result<(I, O1), Err<E>>,
G: Fn(O1) -> Result<O2, E2>,
I: Clone,
applies a function returning a Result over the result of a parser
use nom::character::complete::digit1; use nom::combinator::map_res; let parse = map_res(digit1, |s: &str| s.parse::<u8>()); // the parser will convert the result of digit1 to a number assert_eq!(parse("123"), Ok(("", 123))); // this will fail if digit1 fails assert_eq!(parse("abc"), Err(Err::Error(("abc", ErrorKind::Digit)))); // this will fail if the mapped function fails (a `u8` is too small to hold `123456`) assert_eq!(parse("123456"), Err(Err::Error(("123456", ErrorKind::MapRes))));