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

相关推荐
t***54418 小时前
Clang 编译器在 Orwell Dev-C++ 中的局限性
开发语言·c++
oy_mail18 小时前
QoS质量配置
开发语言·智能路由器·php
oyzz12018 小时前
PHP操作redis
开发语言·redis·php
nashane19 小时前
HarmonyOS 6学习:网络能力变化监听与智能提示——告别流量偷跑,打造贴心网络感知应用
开发语言·php·harmony app
凌波粒19 小时前
Java 8 “新”特性详解:Lambda、函数式接口、Stream、Optional 与方法引用
java·开发语言·idea
拾贰_C20 小时前
【Google | Gemini | API | POST】怎么使用Google 的Gemini API (原生版)
开发语言·lua
t***54421 小时前
如何在Dev-C++中选择Clang编译器
开发语言·c++
橙子1991101621 小时前
Java 基础相关
java·开发语言
星越华夏21 小时前
python——三角函数用法
开发语言·python