我试图理解 Rust 宏语法。在这里我读到宏通常可以通过 3 种方式调用:
mymacro!(<tokens>);
mymacro![<tokens>];
mymacro!{<tokens>};
Run Code Online (Sandbox Code Playgroud)
...然后我看到一个示例宏定义也使用宏 ( macro_rules),但语法不符合以下规则:
macro_rules! name {<tokens>}
Run Code Online (Sandbox Code Playgroud)
是name一个标记,我们在这里有第四个合法的宏调用形式,或者macro_rules是一个关键字而不仅仅是宏,并且使用常规宏不可用的特殊语法?
不,macro_rules是一个特殊的“指令”。您可以在此处检查编译器语法树。重要的部分是:
Syntax
MacroRulesDefinition :
macro_rules ! IDENTIFIER MacroRulesDef
Run Code Online (Sandbox Code Playgroud)
您可以看到它是宏语法的入口点。
| 归档时间: |
|
| 查看次数: |
240 次 |
| 最近记录: |