繰り返し
マクロは引数リストに+を指定することで1回以上の、*を指定することで
0回以上の繰り返しを表現できます。
以下の例で、指定子を$(...),+で囲むことで、コンマで分けられた
一つ以上の式を表現できます。また、最後のセミコロンは省略できます。
// `find_min!`は引数の内最小のものを返します。 macro_rules! find_min { // 基本ケース: ($x:expr) => ($x); // `$x`と1つ以上の`$y,`からなる。 ($x:expr, $($y:expr),+) => ( // `find_min!`を末尾の`$y`に対して実行する std::cmp::min($x, find_min!($($y),+)) ) } fn main() { println!("{}", find_min!(1u32)); println!("{}", find_min!(1u32 + 2, 2u32)); println!("{}", find_min!(5u32, 2u32 * 3, 4u32)); }