about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJonathan Turner <jonathandturner@users.noreply.github.com>2016-08-20 07:09:36 -0700
committerGitHub <noreply@github.com>2016-08-20 07:09:36 -0700
commit0155eb16dd06dbe0761b7486fba96f674cea4d65 (patch)
treeeefe3a8769622e9c89d5818b001f16b7d9e83992
parent15277eb0a9f3d5d1431d159787b89d65827e74e8 (diff)
parent6c66eaa035e5fc47ebbff44b81d2cb3cf1d7d568 (diff)
downloadrust-0155eb16dd06dbe0761b7486fba96f674cea4d65.tar.gz
rust-0155eb16dd06dbe0761b7486fba96f674cea4d65.zip
Rollup merge of #35806 - matthew-piziak:addassign-example, r=steveklabnik
replace `AddAssign` example with something more evocative of addition

This is analogous to PR #35709 for the `Add` trait.
-rw-r--r--src/libcore/ops.rs31
1 files changed, 21 insertions, 10 deletions
diff --git a/src/libcore/ops.rs b/src/libcore/ops.rs
index 34d1109577e..7c6776ebd1f 100644
--- a/src/libcore/ops.rs
+++ b/src/libcore/ops.rs
@@ -980,25 +980,36 @@ shr_impl_all! { u8 u16 u32 u64 usize i8 i16 i32 i64 isize }
 ///
 /// # Examples
 ///
-/// A trivial implementation of `AddAssign`. When `Foo += Foo` happens, it ends up
-/// calling `add_assign`, and therefore, `main` prints `Adding!`.
+/// This example creates a `Point` struct that implements the `AddAssign`
+/// trait, and then demonstrates add-assigning to a mutable `Point`.
 ///
 /// ```
 /// use std::ops::AddAssign;
 ///
-/// struct Foo;
+/// #[derive(Debug)]
+/// struct Point {
+///     x: i32,
+///     y: i32,
+/// }
 ///
-/// impl AddAssign for Foo {
-///     fn add_assign(&mut self, _rhs: Foo) {
-///         println!("Adding!");
+/// impl AddAssign for Point {
+///     fn add_assign(&mut self, other: Point) {
+///         *self = Point {
+///             x: self.x + other.x,
+///             y: self.y + other.y,
+///         };
 ///     }
 /// }
 ///
-/// # #[allow(unused_assignments)]
-/// fn main() {
-///     let mut foo = Foo;
-///     foo += Foo;
+/// impl PartialEq for Point {
+///     fn eq(&self, other: &Self) -> bool {
+///         self.x == other.x && self.y == other.y
+///     }
 /// }
+///
+/// let mut point = Point { x: 1, y: 0 };
+/// point += Point { x: 2, y: 3 };
+/// assert_eq!(point, Point { x: 3, y: 3 });
 /// ```
 #[lang = "add_assign"]
 #[stable(feature = "op_assign_traits", since = "1.8.0")]