Macros Rust宏:如何创建派生标识符?

Macros Rust宏:如何创建派生标识符?,macros,rust,rust-macros,Macros,Rust,Rust Macros,看起来对于标识符,我可以使用ident类型的现有标记,或者创建一个固定/文字标识符。 但是如何创建“派生”标识符呢?也就是说,有了一个现有的令牌$id,我想创建一些派生标识符,比如$id\u后缀-确切的名称其实并不重要-只要它是一个新的,并且是从$id确定派生的。你不能。这是宏观系统的局限性 有一个特殊的宏可以让你创建一个标识符,但是你不能在有用的位置使用它,比如一个新变量的名称。Hmm,听起来像是一个严重的缺陷。这是故意的吗?前两个副本显示了一个使用mashup板条箱的解决方法。实际上,我找到

看起来对于标识符,我可以使用ident类型的现有标记,或者创建一个固定/文字标识符。
但是如何创建“派生”标识符呢?也就是说,有了一个现有的令牌$id,我想创建一些派生标识符,比如$id\u后缀-确切的名称其实并不重要-只要它是一个新的,并且是从$id确定派生的。

你不能。这是宏观系统的局限性


有一个特殊的宏可以让你创建一个标识符,但是你不能在有用的位置使用它,比如一个新变量的名称。

Hmm,听起来像是一个严重的缺陷。这是故意的吗?前两个副本显示了一个使用mashup板条箱的解决方法。实际上,我找到了一个可能的解决方案-至少,对于我的用例。我可以创建一个以标识符命名的内部模块,并将其传递到宏-$id:ident-中,然后在其中放入任意数量的“派生”类型。已经测试过了,似乎有效。@Boiethios这个问题本身就是重复的。@SebastianRedl我知道,但我对您链接的答案不满意:
concat_idents
是一个夜间功能,不打算稳定。答案应该以“不,因为这不卫生”开头。您想如何使用派生标识符?如果您想在宏之外使用它,那么设计上是不可能的)。如果要在宏中使用它,则可能不需要从现有令牌派生它,因为宏系统确保不会发生冲突。你能给我们展示一些你将如何使用一个假设的
派生的代码吗操作?前两个副本显示了使用mashup板条箱的解决方法。