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

相关推荐
洛依尘几秒前
深入浅出 Rust 生命周期:它不是语法负担,而是借用关系的说明书
后端·rust
Rust研习社9 分钟前
通过示例学习 Rust 模式匹配
rust
Jelena1577958579215 分钟前
1688.item_get_app接口:包装尺寸重量信息深度解析
开发语言·前端·python
PaytonD16 分钟前
基于 GPUI 实现 WebScoket 服务端之服务篇
后端·rust
NGC_661122 分钟前
JDK1.7 与 JDK1.8 ConcurrentHashMap:从分段锁到桶级锁的进化
java·开发语言
大黄说说23 分钟前
PHP 数组 vs SPL 数据结构:队列与栈场景下的性能对决
开发语言·数据结构·php
rookie软工26 分钟前
Qt代理委托实现
开发语言·python·qt
leaves falling29 分钟前
C++类和对象(3)(初始化列表,类型转换,static成员,友元)
java·开发语言·c++
宵时待雨31 分钟前
C++笔记归纳15:封装map & set
开发语言·数据结构·c++·笔记·算法
色空大师33 分钟前
【网站开发-java】
java·linux·服务器·开发语言·网站·搭建网站