我无法理解 lazy-static 的 @TAIL
在哪里和 @MAKE
已定义及其特定用例。
如果我理解了internal rules正确地,示例中 @as_expr
的主要用法是隐藏 as_expr!
(或者通常,以前定义的宏)不被导出,即它是一种改变全局的方法宏命名空间。然后,@TAIL
或 @MAKE
应该已经是一个宏,而我在 lazy_static source 中找不到它们。 .
最佳答案
您链接到定义。 @TAIL
就在 137 向下三行,@MAKE
在 162。
@name
在任何方面都不是特别的。绝对没有特殊行为。它只是不能出现在“正常”代码中的一系列标记,因此不太可能意外匹配到其他规则。 @as_expr
不隐藏 as_expr!
宏,它用于而不是定义公开可见的 as_expr!
宏。
关于macros - 在 Rust 宏 2.0 中使用内部规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52808949/