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

相关推荐
咚为22 分钟前
Rust 跨平台编译实战:从手动配置到 Cross 容器化
开发语言·后端·rust
永远睡不够的入25 分钟前
C++STL详解2:stack和queue
开发语言·c++
宵时待雨35 分钟前
C++笔记归纳11:多态
开发语言·c++·笔记
小道士写程序42 分钟前
Babylon.js WebGPU Ocean Demo — 完整踩坑记录
开发语言·javascript·ecmascript
Code知行合壹1 小时前
JDK10新特性
开发语言·jdk
qq_390760391 小时前
简单的线程安全日志记录器
开发语言·数据库·c#
T1an-11 小时前
C++11智能指针shared_ptr的控制块内都有什么?
开发语言·c++
迈巴赫车主1 小时前
天梯赛 L2-004 这是二叉搜索树吗?java
java·开发语言·数据结构·算法·天梯赛
小鸡吃米…1 小时前
基准测试与性能分析
开发语言·python
神仙别闹1 小时前
基于MATLAB实现(GUI)汽车出入库识别系统
开发语言·matlab·汽车