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

Rust 如何在递归宏扩展中调用concat_ident?,rust,Rust,我试图创建一个宏来展开一组名称并定义结构的字段: macro_rules! expand { ($($name:ident),*) => { pub struct Test { $( concat_idents!(var_, $name) : Vec<$name> ),* } } } //fails expand!(a,b,c); macro\u规则!扩展{ ($($name:ident),*)=>

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

macro_rules! expand {
  ($($name:ident),*) => {
     pub struct Test {
       $(
          concat_idents!(var_, $name) : Vec<$name>
        ),*
     }
  }
}
//fails
expand!(a,b,c);
macro\u规则!扩展{
($($name:ident),*)=>{
pub结构测试{
$(
concat_idents!(变量,$name):Vec
),*
}
}
}
//失败
扩大(a、b、c);

这会失败,因为编译器无法识别
concat_ident作为宏。我该如何解决这个问题呢?

目前还不可能以任何方式解决这个问题。替换(
$foo
)是可以的,但不是宏调用。

这个响应已经过时,在宏微分内部进行宏调用是完全合法的。我每晚都在使用1.24.0版。@LukeDupin:没有;答案仍然正确,没有任何变化:解析器不接受字段名位置的宏。要删除
宏规则从等式中,尝试
结构测试{concat_idents!(var_u,a):u8}
:它无法解析。