Module core::opsExperimental
[-]
[+]
[src]
Overloadable operators
Implementing these traits allows you to get an effect similar to overloading operators.
The values for the right hand side of an operator are automatically
borrowed, so a + b is sugar for a.add(&b).
All of these traits are imported by the prelude, so they are available in every Rust program.
Example
This example creates a Point struct that implements Add and Sub, and then
demonstrates adding and subtracting two Points.
#[deriving(Show)] struct Point { x: int, y: int } impl Add<Point, Point> for Point { fn add(self, other: Point) -> Point { Point {x: self.x + other.x, y: self.y + other.y} } } impl Sub<Point, Point> for Point { fn sub(self, other: Point) -> Point { Point {x: self.x - other.x, y: self.y - other.y} } } fn main() { println!("{}", Point {x: 1, y: 0} + Point {x: 2, y: 3}); println!("{}", Point {x: 1, y: 0} - Point {x: 2, y: 3}); }
See the documentation for each trait for a minimum implementation that prints something to the screen.
Structs
| FullRange | An unbounded range. |
| Range | A (half-open) range which is bounded at both ends. |
| RangeFrom | A range which is only bounded below. |
| RangeTo | A range which is only bounded above. |
Traits
| Add | The |
| BitAnd | The |
| BitOr | The |
| BitXor | The |
| Deref | The |
| DerefMut | The |
| Div | The |
| Drop | The |
| Fn | A version of the call operator that takes an immutable receiver. |
| FnMut | A version of the call operator that takes a mutable receiver. |
| FnOnce | A version of the call operator that takes a by-value receiver. |
| Index | The |
| IndexMut | The |
| Mul | The |
| Neg | The |
| Not | The |
| Rem | The |
| Shl | The |
| Shr | The |
| Slice | The |
| SliceMut | The |
| Sub | The |