rust基础第四篇:#[derive()]使用

#[derive()]是rust的一个属性,用于自动为结构体(struct)或枚举(enum)实现特定的trait,即接口,括号里面放接口名,如Debug、Copy、Clone、PartialEq、Eq、PartialOrd、Ord,可以放多个,中间用逗号隔开。

使用#[derive()]修饰结构体或枚举后,编译器可以为我们生成实现这些接口的代码。如

#[derive(PartialEq, Debug)]
struct Point {
x: f64,
y: f64,
}

1、在括号里面放Debug,结构体会自动实现Debug trait,这样就可以用println!("{:?}", point)打印结构体了。

2、在括号里面放Clone,结构体会自动实现Clone trait,这样就可以用point.clone()创建point的副本了。

3、在括号里面放PartialEq、Eq,结构体会自动实现PartialEq trait、Eq trait,这样就可以对结构体进行相等比较了,即=、!=。

#[derive(PartialEq, Debug)]
struct Point {
    x: f64,
    y: f64,
}
fn main() {
    let p1 = Point { x: 1.0, y: 2.0 };
    println!("{:?}", p1);
    let p2 = Point { x: 1.1, y: 2.1 };
    println!("{:?}", p1);
    if p1 != p2 {
        println!("{:?} != {:?}", p1, p2);
    }
}

4、在括号里面放PartialOrd、Ord,结构体会自动实现PartialOrd trait、Ord trait,这样就可以对结构体进行大小比较了,即<、<=、>、>=。

 

posted on 2025-12-01 23:25  koushr  阅读(1)  评论(0)    收藏  举报

导航