Function opt

fn opt<I: Clone, E: ParseError<I>, F>(f: F) -> impl Parser<I, Output = Option<<F as Parser<I>>::Output>, Error = E>
where
    F: Parser<I, Error = E>

Optional parser, will return None on Err::Error.

To chain an error up, see cut.

# use nom::{Err,error::ErrorKind, IResult, Parser};
use nom::combinator::opt;
use nom::character::complete::alpha1;
# fn main() {

fn parser(i: &str) -> IResult<&str, Option<&str>> {
  opt(alpha1).parse(i)
}

assert_eq!(parser("abcd;"), Ok((";", Some("abcd"))));
assert_eq!(parser("123;"), Ok(("123;", None)));
# }