当前位置: 首页 > news >正文

rust笔记4-属性derive

在 Rust 中,#[derive] 是一种属性(attribute),用于自动为类型实现某些 Trait。通过 #[derive],编译器可以自动生成这些 Trait 的默认实现,从而减少手动编写重复代码的工作量。

#[derive] 通常用于实现一些常见的 Trait,例如:

  • Debug:为类型生成格式化输出的代码。
  • Clone:为类型生成克隆代码。
  • Copy:为类型生成按位复制的代码。
  • PartialEqEq:为类型生成相等性比较的代码。
  • PartialOrdOrd:为类型生成排序相关的代码。
  • Hash:为类型生成哈希代码。
  • Default:为类型生成默认值的代码。

下面我们重点介绍 #[derive(PartialEq, PartialOrd)],并详细说明它们的作用和使用场景。


1. #[derive(PartialEq)]

作用
  • PartialEq 是一个用于比较两个值是否相等的 Trait。
  • 它定义了 ==!= 运算符的行为。
  • PartialEq 允许部分相等性比较,即某些值可能无法比较(例如浮点数中的 NaN)。
使用场景
  • 当你需要为自定义类型实现相等性比较时,可以使用 #[derive(PartialEq)]
  • 适用于结构体(struct)和枚举(enum)。
示例
#[derive(PartialEq)]
struct Point {
   
    x: i32,
    y: i32,
}

fn main() {
   
    let p1 = Point {
    x: 1, y: 2 };
    let p2 = Point {
    x: 1, y: 2 };
    let p3 = Point {
    x: 3, y: 4 };

    println!("p1 == p2: {}", p1 == p2); // 输出: true
    println!("p1 &#

相关文章:

  • Vuex与其他状态管理库相比有什么优势?
  • 亲测!我是如何用 Anything LLM 等搭建 AI 智能知识库的
  • Java 设计模式之解释器模式
  • UGUI RectTransform的SizeDelta属性
  • ocr智能票据识别系统|自动化票据识别集成方案
  • 深入浅出:CUDA是什么,如何利用它进行高效并行计算
  • 大数据开发治理平台~DataWorks(词汇梳理)
  • Zipkin 和 SkyWalking 区别
  • Qt——静态函数中发送信号方法总结(不需要通过类内部信号与槽实现,关键是清楚你发送的信号源自哪个对象)
  • docker 安装的open-webui链接ollama出现网络错误
  • 股票与比特币投资困境分析及解决方案
  • Open-WebUI官方部署文档
  • 【Git】说说Git中开发测试的使用Git分支Git标签的使用场景
  • 使用Java爬虫获取1688按图搜索商品(拍立淘API接口)
  • 模拟解决哈希表冲突
  • AI大模型零基础学习(6):多模态大模型实战——让AI看懂世界
  • 【Qt】之【Linux】Qt 5.12.8 单独编译 qtvirtualkeyboard 模块源码
  • LangChain实践11-问答
  • 【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑩】
  • 深入解析iOS视频录制(二):自定义UI的实现
  • 调节负面情绪可以缓解慢性疼痛
  • 观察|印巴交火开始升级,是否会演变为第四次印巴战争?
  • 山东莒县农商银行去年收入、利润下降,资本充足率等指标增长
  • 多个“网约摩托车”平台上线,工人日报:安全与监管不能掉队
  • 中国驻俄大使张汉晖人民日报撰文:共襄和平伟业,续谱友谊新篇
  • 安顺市原副市长、市公安局原局长顾长华任贵州省民委副主任