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

相关推荐
沐知全栈开发4 分钟前
C 标准库 - <locale.h>
开发语言
老毛肚8 分钟前
Java两种代理模式详解
java·开发语言·代理模式
小此方12 分钟前
Re:从零开始学C++(二)基础精讲·中篇:引用
开发语言·c++·底层
消失的旧时光-194323 分钟前
Java 线程通信:彻底理解 wait / notify(原理 + 图解 + 实战)
java·开发语言
Coder_Boy_1 小时前
【DDD领域驱动开发】基础概念和企业级项目规范入门简介
java·开发语言·人工智能·驱动开发
morning_judger1 小时前
JavaScript封装演进史:从全局变量到闭包
开发语言·javascript
CoderYanger1 小时前
A.每日一题——3606. 优惠券校验器
java·开发语言·数据结构·算法·leetcode
Source.Liu1 小时前
【time-rs】Duration 结构体详解
rust·time
飛6791 小时前
玩转 Flutter 自定义 Painter:从零打造丝滑的仪表盘动效与可视化图表
开发语言·javascript·flutter
利剑 -~1 小时前
设计java高并安全类
java·开发语言