0
macro_rules! log {
    ($($x:expr),*) => {
        {
            $(
             //how to detect $x in the Macro repetition?

            )*
        }
    };
}

我不想使用($($x:ident),*). 宏可以记录表达式,然后log!我想匹配变量类型。

4

1 回答 1

3

宏只能访问令牌流,除了明确赋予宏的内容外,不能对这些令牌进行更多说明。

例如,考虑以下代码:

fn main() {
    let mut foo: i32 = 1;
    my_macro!(foo);
}

宏可用的唯一信息my_macro是输入标记foo。它可以匹配这foo是一个标识符,但它不能说更多关于它的内容。存在称为可变绑定的事实foo,或者此绑定是一个i32在宏中不可用的事实。

于 2019-11-14T22:21:49.360 回答