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还是把多继承搬出来了。是不是可以理解成编译器层面的多继承呢?

相关推荐
认真敲代码的小火龙23 分钟前
【JAVA项目】基于JAVA的养老院管理系统
java·开发语言·课程设计
AI科技星25 分钟前
统一场论质量定义方程:数学验证与应用分析
开发语言·数据结构·经验分享·线性代数·算法
扶苏-su25 分钟前
Java---事件处理机制
java·开发语言
小灰灰搞电子29 分钟前
Qt 实现炫酷锁屏源码分享
开发语言·qt·命令模式
电饭叔38 分钟前
TypeError:unsupported operand type(s) for -: ‘method‘ and ‘int‘
开发语言·笔记·python
zfj32141 分钟前
排查java应用内存溢出的工具和方法
java·开发语言·jvm·内存溢出
yugi98783844 分钟前
MATLAB在卫星姿态控制系统中的应用
开发语言·matlab
历程里程碑1 小时前
C++ 7vector:动态数组的终极指南
java·c语言·开发语言·数据结构·c++·算法
ss2731 小时前
高并发读场景:写时复制容器(Copy-On-Write)
java·开发语言·rpc
czhc11400756631 小时前
c# 1213
开发语言·数据库·c#