如何在递归宏扩展中调用concat_idents?

时间:2015-05-07 23:56:40

标签: rust

我试图创建一个宏来扩展一组名称并为结构定义字段:

macro_rules! expand {
  ($($name:ident),*) => {
     pub struct Test {
       $(
          concat_idents!(var_, $name) : Vec<$name>
        ),*
     }
  }
}
//fails
expand!(a,b,c);

由于编译器无法将concat_idents!识别为宏,因此失败。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

目前无法以任何方式执行此操作。替换($foo)在那里很好,但不是宏调用。