Skip to content

Commit

Permalink
Rollup merge of rust-lang#35709 - matthew-piziak:add-trait-example, r…
Browse files Browse the repository at this point in the history
…=GuillaumeGomez

replace `Add` example with something more evocative of addition

Currently most of the operator traits use trivial implementation
examples that only perform side effects. Honestly, that might not be too
bad for the sake of documentation; but anyway, here's a proposal to move
a slightly modified version of the module-level point-addition example
into the `Add` documentation, since it's more evocative of addition
semantics.

Part of rust-lang#29365
  • Loading branch information
Jonathan Turner committed Aug 19, 2016
2 parents 05fb19c + dcee93a commit cf4432a
Showing 1 changed file with 23 additions and 11 deletions.
34 changes: 23 additions & 11 deletions src/libcore/ops.rs
Expand Up @@ -67,8 +67,7 @@
//! }
//! ```
//!
//! See the documentation for each trait for a minimum implementation that
//! prints something to the screen.
//! See the documentation for each trait for an example implementation.

#![stable(feature = "rust1", since = "1.0.0")]

Expand Down Expand Up @@ -171,25 +170,38 @@ macro_rules! forward_ref_binop {
///
/// # Examples
///
/// A trivial implementation of `Add`. When `Foo + Foo` happens, it ends up
/// calling `add`, and therefore, `main` prints `Adding!`.
/// This example creates a `Point` struct that implements the `Add` trait, and
/// then demonstrates adding two `Point`s.
///
/// ```
/// use std::ops::Add;
///
/// struct Foo;
/// #[derive(Debug)]
/// struct Point {
/// x: i32,
/// y: i32,
/// }
///
/// impl Add for Foo {
/// type Output = Foo;
/// impl Add for Point {
/// type Output = Point;
///
/// fn add(self, _rhs: Foo) -> Foo {
/// println!("Adding!");
/// self
/// fn add(self, other: Point) -> Point {
/// Point {
/// x: self.x + other.x,
/// y: self.y + other.y,
/// }
/// }
/// }
///
/// impl PartialEq for Point {
/// fn eq(&self, other: &Self) -> bool {
/// self.x == other.x && self.y == other.y
/// }
/// }
///
/// fn main() {
/// Foo + Foo;
/// assert_eq!(Point { x: 1, y: 0 } + Point { x: 2, y: 3 },
/// Point { x: 3, y: 3 });
/// }
/// ```
#[lang = "add"]
Expand Down

0 comments on commit cf4432a

Please sign in to comment.