Skip to content

Latest commit

 

History

History
43 lines (32 loc) · 1.18 KB

operators-and-overloading.md

File metadata and controls

43 lines (32 loc) · 1.18 KB

% 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 });
}

Here are the relevant sections in the new and old books: