How to implement operator overloading

Implement operator overloading in Rust by defining traits from the std::ops module for your custom struct.

You implement operator overloading in Rust by implementing specific traits from the std::ops module for your custom type.

use std::ops::Add;

struct Point {
    x: i32,
    y: i32,
}

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 p3 = p1 + p2; // Uses the overloaded + operator
    println!("({}, {})", p3.x, p3.y);
}