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

相关推荐
天若有情6735 小时前
【C++趣味实战】仿写Burp代理逻辑!自定义可控迭代器:拦截Intercept/放行Forward/重放Repeater全实现
java·开发语言·c++
l1t5 小时前
DeepSeek总结的使用实体-组件-系统和基于存在性处理进行Python编程37-38
开发语言·python
迷藏4945 小时前
Python+DuckDB:轻量级BI流水线实战
java·开发语言·python·原型模式
咋吃都不胖lyh5 小时前
短期记忆和长期记忆都存 MySQL
android·java·开发语言
rime_neko5 小时前
js学习笔记
开发语言·前端·javascript
咸甜适中5 小时前
rust语言学习笔记Trait(十五)Drop(释放资源)
笔记·学习·rust
caimouse5 小时前
ReactOS 硬件资源仲裁器 (Arbiter) 完整实现计划
开发语言
IT笔记6 小时前
【Rust】 Rust宏学习笔记
笔记·学习·rust
新手村领路人6 小时前
在macos python中安装dlib
开发语言·python·macos
郝学胜-神的一滴6 小时前
Qt 高级开发 024:QSplitter分裂器布局精讲
开发语言·c++·qt·程序人生·用户界面