#match #pattern #multiple #macro #matching #expression #executed

match_all

本crate提供了一个match_all!宏,用于匹配多个模式

8个版本

使用旧Rust 2015

0.2.5 2017年7月26日
0.2.4 2017年7月26日
0.1.1 2017年7月25日

2670Rust模式

MIT 协议

10KB
77

match_all

为Rust提供了match_all!

此宏提供了与普通match语句类似的功能,但允许执行多个表达式块。

格式

match_all!{ value,
    IfNoMatch => expr,
    pat | pat ... => expr,
    ...
}
  • value:要匹配的表达式。
  • IfNoMatch:如果其他模式都没有匹配,则执行此表达式后的表达式。此分支是可选的。
  • pat | pat ...:这是要检查的模式组合。如果其中任何一个与值匹配,则执行相应的表达式。检查完一组模式后,将检查下一组模式,直到检查完所有组。如果没有匹配,则执行IfNoMatch表达式。

示例一

let value = Some(4);

match_all!{ value,
    None => println!("Hi"),
    Some(3) | Some(4) => println!("Hello"),
    Some(4) | Some(5) => println!("Howdy")
}

这将打印

Hello
Howdy

示例二

let value = Some(20);
match_all!{ value,
    IfNoMatch => println!("No Match"),
    0...4 => println!("0 through 4")
};

这将打印

No Match

它打印这个,因为它使用了特殊的IfNoMatch表达式来提供一个仅在没有其他表达式匹配时才匹配的表达式。

无运行时依赖