rocket::mtls::oid::asn1_rs::nom::combinator

Function map_res

Source
pub fn map_res<I, O1, O2, E, E2, F, G>(parser: F, f: G) -> impl FnMut(I)
where I: Clone, E: FromExternalError<I, E2>, F: Parser<I, O1, E>, G: FnMut(O1) -> Result<O2, E2>,
Available on crate feature mtls only.
Expand description

Applies a function returning a Result over the result of a parser.

use nom::character::complete::digit1;
use nom::combinator::map_res;

let mut 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))));