about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume1.gomez@gmail.com>2016-10-19 23:15:00 +0200
committerGitHub <noreply@github.com>2016-10-19 23:15:00 +0200
commitce369bfa1120b1293933c8e12a1c18e62a2a153e (patch)
tree291c2749494ea71bb5b4f3735d09ab830f950655
parent32820c149b4b92aafc5f8d2e48a4265c5d865a1d (diff)
parenta8dc2975fd2700e3ed56679ce1bcbd6c2f4c3ab0 (diff)
downloadrust-ce369bfa1120b1293933c8e12a1c18e62a2a153e.tar.gz
rust-ce369bfa1120b1293933c8e12a1c18e62a2a153e.zip
Rollup merge of #37187 - frewsxcv:cow-doc-example, r=kmcallister
Improve doc example for `std::borrow::Cow`.

None
-rw-r--r--src/libcollections/borrow.rs17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/libcollections/borrow.rs b/src/libcollections/borrow.rs
index 6b45c25eb21..8f9c3578337 100644
--- a/src/libcollections/borrow.rs
+++ b/src/libcollections/borrow.rs
@@ -86,16 +86,29 @@ impl<T> ToOwned for T where T: Clone {
 /// ```
 /// use std::borrow::Cow;
 ///
-/// # #[allow(dead_code)]
 /// fn abs_all(input: &mut Cow<[i32]>) {
 ///     for i in 0..input.len() {
 ///         let v = input[i];
 ///         if v < 0 {
-///             // clones into a vector the first time (if not already owned)
+///             // Clones into a vector if not already owned.
 ///             input.to_mut()[i] = -v;
 ///         }
 ///     }
 /// }
+///
+/// // No clone occurs because `input` doesn't need to be mutated.
+/// let slice = [0, 1, 2];
+/// let mut input = Cow::from(&slice[..]);
+/// abs_all(&mut input);
+///
+/// // Clone occurs because `input` needs to be mutated.
+/// let slice = [-1, 0, 1];
+/// let mut input = Cow::from(&slice[..]);
+/// abs_all(&mut input);
+///
+/// // No clone occurs because `input` is already owned.
+/// let mut input = Cow::from(vec![-1, 0, 1]);
+/// abs_all(&mut input);
 /// ```
 #[stable(feature = "rust1", since = "1.0.0")]
 pub enum Cow<'a, B: ?Sized + 'a>