// 定义一个结构体
struct Point {
x: i32,
y: i32,
}
// 为Point结构体实现Add trait,重载加法运算符
use std::ops::Add;
impl Add for Point {
type Output = Point;
fn add(self, other: Point) -> Point {
Point {
x: self.x + other.x,
y: self.y + other.y,
}
}
}
fn main() {
let p1 = Point { x: 1, y: 2 };
let p2 = Point { x: 3, y: 4 };
let result = p1 + p2;
println!("结果: x = {}, y = {}", result.x, result.y);
}
实现过程解释
- 定义结构体:
struct Point { x: i32, y: i32; }
定义了一个名为 Point
的结构体,它有两个 i32
类型的字段 x
和 y
,可以理解为二维平面上的一个点的坐标。
- 重载加法运算符:
use std::ops::Add;
引入 Add
trait,这个trait定义了加法操作的行为。
impl Add for Point
为 Point
结构体实现 Add
trait。
type Output = Point;
定义加法操作返回的类型也是 Point
结构体。
fn add(self, other: Point) -> Point
实现 add
方法,该方法接收两个 Point
实例(self
和 other
),返回一个新的 Point
实例,新实例的 x
字段是两个操作数 x
字段之和,y
字段是两个操作数 y
字段之和。
- 测试代码:
- 在
main
函数中,创建两个 Point
实例 p1
和 p2
,然后使用重载的加法运算符 +
将它们相加,将结果打印出来。