P.MAC.DCL.04 匹配规则要精准,不要模糊不清

【描述】

匹配规则必须精准,因为宏解析器并不会去执行代码,它无法匹配模糊不清的规则。

【反例】

宏解析器无法确定第一次匹配的应该是多少个 ident

macro_rules! ambiguity {
    ($($i:ident)* $i2:ident) => { };
}

// error:
//    local ambiguity: multiple parsing options: built-in NTs ident ('i') or ident ('i2').
fn main() { ambiguity!(an_identifier); }

【正例】

macro_rules! ambiguity {
    ($i2:ident $($i:ident)* ) => { };
}

// ok
fn main() { ambiguity!(an_identifier  an_identifier2); }