Rust 中的所有属性都是作为宏实现的吗?或者某些 native 属性是由编译器/语言专门创建的并且不使用宏机制?
如果存在不是通过宏创建的属性,我如何识别它们?
最佳答案
有许多属性不是宏,而是由编译器专门处理的。示例:#[cfg]
(尽管这个可以被认为是一个宏,即使没有作为一个实现),#[repr]
, #[doc]
, #[allow(...)]
/#[warn(...)]
/#[deny(...)]
/#[forbid(...)]
等等。
除了查看the list of builtin macro attributes之外,我不知道识别此类属性的方法。看看他们是否在那里。
关于rust - 所有 Rust 属性都是宏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73517374/