rust笔记4-属性derive
在 Rust 中,#[derive]
是一种属性(attribute),用于自动为类型实现某些 Trait。通过 #[derive]
,编译器可以自动生成这些 Trait 的默认实现,从而减少手动编写重复代码的工作量。
#[derive]
通常用于实现一些常见的 Trait,例如:
Debug
:为类型生成格式化输出的代码。Clone
:为类型生成克隆代码。Copy
:为类型生成按位复制的代码。PartialEq
和Eq
:为类型生成相等性比较的代码。PartialOrd
和Ord
:为类型生成排序相关的代码。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 &#