Rust 中的宏、关键字、运算符及可派生特性
1. Rust 中的过程宏
Rust 中有三种类型的过程宏:自定义派生宏、类属性宏和类函数宏,它们的工作方式基本相同。在创建过程宏时,定义必须放在具有唯一 crate 类型的独立 crate 中,这是由于一些技术问题,希望未来能解决。
定义过程宏的函数接受一个 TokenStream 作为输入,并输出一个 TokenStream 。 proc_macro crate 定义了 TokenStream 类型,表示一系列标记。这是宏的核心:宏操作的源代码是输入的 TokenStream ,宏生成的代码是输出的 TokenStream 。函数还有一个属性,用于指定我们正在创建的过程宏的类型。在同一个 crate 中,我们可以有不同类型的过程宏。
1.1 自定义派生宏
我们来创建一个名为 hello_macro 的 crate,它定义了一个名为 HelloMacro 的 trait 和一个名为 hello_macro 的函数。我们将提供一个过程宏,允许用户使用 #[derive(HelloMacro)] 来为他们的类型获得 hello_macro 函数的默认实现。默认情况下,会打印:“Hello, Macro! My name is TypeName”,其中 TypeName
超级会员免费看
订阅专栏 解锁全文
67

被折叠的 条评论
为什么被折叠?



