Skip to content

Latest commit

 

History

History
36 lines (27 loc) · 833 Bytes

operators-and-overloading.md

File metadata and controls

36 lines (27 loc) · 833 Bytes

% Operators and Overloading

There is a new edition of the book and this is an old link.

Rust does not allow you to create your own operators or overload arbitrary operators, but the operations and corresponding traits listed in std::ops can be overloaded by implementing the traits associated with the operator.

use std::ops::Add;

#[derive(Debug,PartialEq)]
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() {
    assert_eq!(Point { x: 1, y: 0 } + Point { x: 2, y: 3 },
               Point { x: 3, y: 3 });
}

You can find the latest version of this information here.