Rust 程序设计语言 简体中文版 1.85.0TokenStream) -> TokenStream { // 将 Rust 代码构建成我们可以操作的语法树。 let ast = syn::parse(input).unwrap(); // 生成 trait 的实现。 impl_hello_macro(&ast) } 示例 20-40: 大多数过程式宏处理 Rust 代码时所需的代码 注意我们将代码分成了 hello_macro_derive 的代码,如示例 20-42 所示。 文件名:hello_macro_derive/src/lib.rs fn impl_hello_macro(ast: &syn::DeriveInput) -> TokenStream { let name = &ast.ident; let generated = quote! { impl HelloMacro for #name } } }; generated.into() } 示例 20-42: 使用解析过的 Rust 代码实现 HelloMacro trait 我们得到一个包含以 ast.ident 作为注解类型名字(标识符)的 Ident 结构体实例。示例 20-33 中的结构体表明当 impl_hello_macro 函数运行于示例 20-31 中的代码上时 ident 字段 的值是0 码力 | 562 页 | 3.23 MB | 29 天前3
共 1 条
- 1













