Rust宏是语法层面的,它们作用于AST。可能会让您在术语上困惑的是,Rust有两种不同的宏风格,它们的编写方式和使用方式不同。一种是带有规则的宏(也称为“例子宏”),是通过调用`macro_rules!`创建的。另一种是过程宏,它们被编写成处理`TokenStream`输入和输出的函数(可以用作属性、衍生或像函数一样使用)。另请参阅:- Rust Book中的宏 - Rust Reference中的过程宏和示例宏
macro_rules!
定义声明性宏,它们是简单(声明性)转换,因此它们大多是方便的助手。过程式宏是完整的Rust程序,操作令牌流。过程式宏更加强大,因为您可以使用整个编程语言。 - Masklinn