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

相关推荐
独自破碎E1 分钟前
Java中的Exception和Error有什么区别?
java·开发语言
zyx没烦恼8 分钟前
YAML模块
开发语言·python
智航GIS12 分钟前
4.2 集合(Set)
开发语言·python
小白学大数据16 分钟前
利用 Selenium 与 BeautifulSoup 构建链家动态爬虫
开发语言·爬虫·selenium·beautifulsoup
qq_3771123716 分钟前
从零开始深入理解并发、线程与等待通知机制
java·开发语言
花哥码天下24 分钟前
修复Bash脚本Here Document错误
开发语言·bash
Rysxt_29 分钟前
UniApp uni_modules 文件夹详细教程
开发语言·javascript·ecmascript
Wang's Blog1 小时前
Lua: 核心机制解析之函数的多维魔法与模块化封装艺术
开发语言·lua
小高Baby@1 小时前
使用Go语言中的Channel实现并发编程
开发语言·后端·golang
蓝色汪洋1 小时前
经典修路问题
开发语言·c++·算法