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

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 &#

http://www.kler.cn/a/552418.html

相关文章:

  • 学习总结三十六
  • Linux 权限浅谈
  • 【Spring+MyBatis】留言墙的实现
  • 在Windows系统中安装Open WebUI并连接Ollama
  • MySQL中单引号和双引号(‘‘和““)的区别
  • 汽车同轴供电(PoC)电感器市场报告:未来几年年复合增长率CAGR为14.3%
  • 15.3.10 窗体下使用多线程
  • linux----docker配置nginx详细教程
  • 八、敏捷开发工具:自动化测试工具
  • Vue.prototype 详解及使用
  • 浅谈DNN(深度神经网络)算法原理
  • Spring MVC Streaming and SSE Request Processing SSE可以实现chatgpt一次请求分批次响应的效果
  • 基于Ubuntu系统的docker环境对MySQL8.0.36主从部署
  • Swagger 转 Word 技术方案
  • 【核心算法篇三】《DeepSeek强化学习:Atari游戏训练框架解析》
  • 如何利用爬虫抓取多个页面的商品销量数据
  • ubuntu网络及软件包管理
  • 算法每日一练 (3)
  • 使用 @Results 注解来手动指定字段映射
  • 24蓝桥省赛B-数字接龙