尾部分隔符

  1. macro_rules! match_exprs {
  2. ($($exprs:expr),* $(,)*) => {...};
  3. }

Rust语法在很多地方允许尾部分隔符存在。一列(举例说)表达式的常见匹配方式有两种($($exprs:expr),*$($exprs:expr,)*);一种可处理无尾部分隔符的情况,一种可处理有的情况;但没办法同时匹配到。

不过,在主重复的尾部放置一个$(,)*重复,则可以匹配到任意数量(包括0或1)的尾部分隔符。

注意此模式并非对所有情况都适用。如果被编译器拒绝,可以尝试增加匹配臂和/或使用逐条匹配。