Rust 程序设计语言 简体中文版 1.85.0hello_macro crate,其包含名为 HelloMacro 的 trait 和关联函数 hello_macro。不同于让用户为其每一个类型实现 HelloMacro trait,我们将会提供一个过程式 宏以便用户可以使用 #[derive(HelloMacro)] 注解它们的类型来得到 hello_macro 函数的默认 实现。该默认实现会打印 Hello, Macro! My name is TypeName #[derive(HelloMacro)] struct Pancakes; fn main() { Pancakes::hello_macro(); } 示例 20-37: 我们 crate 的用户所写的能够使用过程式宏的代码 运行该代码将会打印 Hello, Macro! My name is Pancakes! 第一步是像下面这样新建一个库 crate: $ cargo new hello_macro --lib 的类型的名字的默认 实现:Rust 没有反射能力,因此其无法在运行时获取类型名。我们需要一个在编译时生成代 码的宏。 501/562Rust 程序设计语言 简体中文版 下一步是定义过程宏。在编写本部分时,过程式宏必须在其自己的 crate 内。该限制最终可能 被取消。crate 及其宏 crate 的结构惯例如下:对于一个名为 foo 的 crate,其自定义 derive 过程宏 crate 通常命名为0 码力 | 562 页 | 3.23 MB | 26 天前3
共 1 条
- 1













