Guest User

Untitled

a guest
Dec 13th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.58 KB | None | 0 0
  1. let result = captures!("Event A: 123.45",
  2. r"FloatEvent: (d+)" => |x| MyEvent::FloatEvent(&x[1].parse.unwrap()),
  3. r"StringEvent: (.+)" => |x| MyEvent::StringEvent(&x[1]),
  4. );
  5.  
  6. assert_eq!(result, MyEvent::FloatEvent(123.45));
  7.  
  8. macro_rules! captures {
  9. ( $test:expr, $re:expr ) => { None };
  10. ( $test:expr, $re:expr => $closure:expr, $( $re2:expr => $rest:expr, )* ) => {
  11. match Regex::new($re).unwrap().captures(line) { // todo lazy static
  12. Some(caps) => $closure(caps),
  13. _ => captures!($test, $re, $( $re2, $rest, )*)
  14. }
  15. };
  16. }
Add Comment
Please, Sign In to add comment