网站首页 > 博客文章 正文
概念
学习目标:鉴于宏的使用场景大于开发场景,因此本节目标并不要求掌握宏的完整开发流程,了解过程宏的实现原理即可。上一节我们学习了声明式宏,本节我们继续学习过程宏中的派生宏。
派生宏(Derive Macros):通常用于为struct结构体、enum枚举、union类型实现Trait特征(见4.5节 Trait特征)。使用时通过#[derive(CustomMacro)]这样的语法,允许用户轻松地为自定义类型提供一些通用的实现。前文提到三种过程宏(派生宏、属性宏、函数宏),它们的工作方式都是类似的:使用 Rust 的源代码作为输入参数,基于代码进行一系列操作后,再输出一段全新的代码。
一个过程宏的简单框架如下:
proc_macro_derive 稍微特殊一些,因为它需要一个额外的标识符,此标识符将成为 derive 宏的实际名称,如CustomMacro、Clone、Copy等。
input 输入标记流是添加了 derive 属性的类型,它将始终是 enum、struct 或者 union 类型,因为只有这些类型才可以使用 derive 派生宏。
需要说明的是,过程宏中的派生宏输出的代码并不会替换之前的代码,而是在原来代码基础上追加指定宏的 Trait 实现。
文档:
下面的代码我们定义了一个Foo结构体,通常情况下 struct 有许多 Trait 要实现。这里使用了2种方式,一种是常规的impl,另一种是使用宏
这种情况下显然通过derive宏更加方便。但以上两种方式并没有孰优孰劣,主要在于不同的类型是否可以使用同样的默认特征实现,如果可以,那过程宏的方式可以帮我们减少很多代码实现。
示例代码:
这里展示了HelloMacro的核心逻辑,省略了创建crate包的内容。
猜你喜欢
- 2024-09-11 Rust 写操作系统之Hello world (三)
- 2024-09-11 Rust: 如何用Panic打造健壮应用(rust zig)
- 2024-09-11 在 Linux 新版内核中的 Rust 初探,原来是这样的
- 2024-09-11 Rust 向量(Vec)(rust 向量化)
- 2024-09-11 Rust 入坑指南:鳞次栉比 | CSDN 博文精选
- 2024-09-11 学习Rust编程——使用macro_rules!创建宏
- 2024-09-11 利用 Rust 过程宏实现的 derive-with 库
- 2024-09-11 Rust 基础入门-错误处理和宏-错误处理
- 2024-09-11 Rust 基础入门-错误处理和宏-属性式宏&函数式宏
- 2024-09-11 Rust中巧用matches!宏(rust腐蚀免费版)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)