% 末尾のセパレーター
macro_rules! match_exprs {
($($exprs:expr),* $(,)*) => {...};
}
Rust の文法には、末尾のカンマが許可される箇所がさまざまあります。式のリストをマッチする一般的な 2 つの方法(たとえば、$($exprs:expr),* と $($exprs:expr,)*)は、末尾のカンマがない場合、または末尾のカンマがある場合のどちらか一方には対応できますが、両方には対応できません。
しかし、メインのリストの後に $(,)* の繰り返しを置くと、任意の数(0 個や 1 個を含む)の末尾のカンマ、または使用しているその他のセパレーターを捕捉できます。
これはすべてのコンテキストで使用できるわけではないことに注意してください。コンパイラーがこれを拒否する場合は、おそらく複数のアームやインクリメンタルマッチングを使用する必要があります。