代码示例
use std::ops::Add;
#[derive(Debug, Copy, Clone)]
struct Point {
x: f64,
y: f64,
}
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.0, y: 2.0 };
let p2 = Point { x: 3.0, y: 4.0 };
let p3 = p1 + p2;
println!("{:?}", p3);
}
其他运算符
- Sub(-):减法
- Mul(*):乘法
- Div(/):除法
- Rem(%):取余
- Neg(-):一元负号
- Not(!):按位取反
- BitAnd(&):按位与
- BitOr(|):按位或
- BitXor(^):按位异或
- Shl(<<):左移
- Shr(>>):右移
完整代码
#![allow(warnings)]
use std::io;
use std::ops::Add;
use std::error::Error;
use std::boxed::Box;
use std::convert::TryInto;
use std::cmp::Ordering;
use std::cmp::min;
use std::cmp::max;
struct User<'a> {
age: usize,
name: &'a str
}
impl<'a> Add for User<'a> {
type Output = usize;
fn add(self, next: User) -> usize {
self.age + next.age
}
}
fn main() -> Result<(), Box<dyn Error>> {
let u1: User = User {
age: 10,
name: "SQS"
};
let u2: User = User {
age: 20,
name: "sqssqs"
};
print!("{}", u1 + u2);
Ok(())
}