宏不扩展内插令牌树吗?

时间:2015-05-30 12:26:58

标签: rust

为什么this

macro_rules! a_macro {
    ($($a:tt)+) => ($($a)+);
}   

fn main() {
    let x:u32 = 1;
    let y:u32 = a_macro!(-x);
}

无法使用

进行编译
<anon>:2:23: 2:25 error: unexpected token: `an interpolated tt`
<anon>:2     ($($a:tt)+) => ($($a)+);
                               ^~
playpen: application terminated with error code 101

1 个答案:

答案 0 :(得分:5)

原因是:它尚未实施。这是一个已知的限制(从Rust 1.0开始)。宏are usefultt个参数,但在使用时必须始终转发到宏。