• 重复

    重复

    宏在参数列表中可以使用 + 来表示一个参数可能出现一次或多次,使用 * 来表示该参数可能出现零次或多次。

    在下面例子中,使用 $(...),+ 包含的内容将匹配一个或多个表达式,使用逗号隔开。还注意到分号对于最后一种情形是可选的。

    1. // `min!` 将求出任意数量的参数的最小值。
    2. macro_rules! find_min {
    3. // 基本情形:
    4. ($x:expr) => ($x);
    5. // `$x` 后面跟着至少一个 `$y,`
    6. ($x:expr, $($y:expr),+) => (
    7. // 对尾部的 `$y` 调用 `find_min!`
    8. std::cmp::min($x, find_min!($($y),+))
    9. )
    10. }
    11. fn main() {
    12. println!("{}", find_min!(1u32));
    13. println!("{}", find_min!(1u32 + 2 , 2u32));
    14. println!("{}", find_min!(5u32, 2u32 * 3, 4u32));
    15. }