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

相关推荐
半兽先生6 小时前
使用 retire.js 自动检测前端 JavaScript 库漏洞
开发语言·前端·javascript
之歆7 小时前
HA 高可用集群指南
java·开发语言
lsx2024068 小时前
电子商务网站主机:选择与维护指南
开发语言
wangluoqi8 小时前
c++ 逆元 小总结
开发语言·c++
BackCatK Chen8 小时前
第十五章 吃透C语言结构与数据形式:struct/union/typedef全解析
c语言·开发语言·数据结构·typedef·结构体·函数指针·联合体
瓦特what?8 小时前
插 入 排 序
开发语言·c++
m0_531237178 小时前
C语言-初始化赋值,函数,变量的作用域与生命周期
c语言·开发语言
张3蜂8 小时前
Python venv 详解:为什么要用、怎么用、怎么用好
开发语言·python
zyeyeye9 小时前
自定义类型:结构体
c语言·开发语言·数据结构·c++·算法
火龙果研究院9 小时前
在CentOS上安装Python 3.13需要从源码编译
开发语言·python·centos