Rust的derive思考

这几天在Yew的学习实践中,发现derive中的参数中包含了yew自己的东西,比如yew::Properties。习惯使用#derive(Clone, Debug, PartialEq)之后,发现还有新的成员,这让我好奇起来。

首先让我们来回顾一下derive是什么。

  1. #derive()是Rust中的一个attribute
  2. #derive()只能作用于struct和enum
  3. #derive()的参数是trait
  4. 编译器会为我们生成实现这些trait的代码

那么根据上面的对derive的定义,怎么理解下面这段代码呢?

rust 复制代码
#[derive(Properties, Clone, PartialEq)]
pub struct Props {
  show: bool,
}

我也是才学习Rust,我的理解如下,有不对的地方还请大家留言指正。

  1. 结构体Props继承了Properties, Clone, PartialEq这3个trait的实现;
  2. trait的实现工作由编译器搞定,它对使用者来说是透明的,不可见的;

Rust语言本身没有多继承这种说法,但是derive这个attribute还是把多继承搬出来了。是不是可以理解成编译器层面的多继承呢?

相关推荐
下页、再停留22 分钟前
【C#桌面客户端系列学习-8】批量导出数据为csv格式
开发语言·c#·visual studio
菜鸟~noob23328 分钟前
【电子战】 第26篇:大气衰减——氧气与水汽吸收【含matlab代码】
开发语言·matlab
菜鸟~noob23332 分钟前
【电子战】第25篇:自由空间、双射线与菲涅尔区【含matlab代码】
开发语言·算法·matlab
梅菲塔亚41 分钟前
华为云从入门到实战
开发语言·华为云·php
霸道流氓气质1 小时前
幂等性与 Upsert:防止重复操作产生副作用的技术
开发语言·php
牛奔1 小时前
mise 管理多版本 Go 项目
开发语言·前端·chrome·后端·golang
波力海苔夹心脆6751 小时前
C# 视觉检测实战:PLC 按钮触发 VisionPro 检测,OK 亮灯 / NG 灭灯(西门子 PLC,含界面显示与图片存档)
开发语言·经验分享·c#·自动化·视觉检测·.net
2601_962885721 小时前
如何用 Python 计算 BBI 多空指标?
开发语言·python
wflynn2 小时前
GitHub 今日推荐|wordcraft:用 Rust 重写 Word 内核并开放给 AI 调用
rust·开源·github