Macro combine::choice
[−]
[src]
macro_rules! choice { ($first : expr) => { ... }; ($first : expr, $($rest : expr),+) => { ... }; }
Takes a number of parsers and tries to apply them each in order. Fails if all the parsers fails or if an applied parser consumes input before failing.
let mut parser = choice!( many1(digit()), string("let").map(|s| s.to_string()), many1(letter())); assert_eq!(parser.parse("let"), Ok(("let".to_string(), ""))); assert_eq!(parser.parse("123abc"), Ok(("123".to_string(), "abc"))); assert!(parser.parse(":123").is_err());