Macro cpp_synom::option [] [src]

macro_rules! option {
    ($i:expr, $submac:ident!( $($args:tt)* )) => { ... };
    ($i:expr, $f:expr) => { ... };
}

Turn a failed parse into None and a successful parse into Some.

  • Syntax: option!(THING)
  • Output: Option<THING>
extern crate syn;
#[macro_use] extern crate synom;

named!(maybe_bang -> Option<&str>, option!(punct!("!")));

fn main() {
    let input = "!";
    let parsed = maybe_bang(input).expect("maybe bang");
    assert_eq!(parsed, Some("!"));

    let input = "";
    let parsed = maybe_bang(input).expect("maybe bang");
    assert_eq!(parsed, None);
}