about summary refs log tree commit diff
path: root/src/liballoc/collections
diff options
context:
space:
mode:
authorJosh Stone <jistone@redhat.com>2019-05-10 18:01:50 -0700
committerJosh Stone <jistone@redhat.com>2019-05-10 18:01:50 -0700
commit0545375ca6822b4b140cd853f368473d69b76227 (patch)
tree6be87ecda326a2121b32968c1643039d4877d400 /src/liballoc/collections
parent9b3583375dbd45b19b8ce8822b89ff79529354d6 (diff)
downloadrust-0545375ca6822b4b140cd853f368473d69b76227.tar.gz
rust-0545375ca6822b4b140cd853f368473d69b76227.zip
Add examples of ordered retain
Diffstat (limited to 'src/liballoc/collections')
-rw-r--r--src/liballoc/collections/vec_deque.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/liballoc/collections/vec_deque.rs b/src/liballoc/collections/vec_deque.rs
index 82a60f92444..9a8d48083e6 100644
--- a/src/liballoc/collections/vec_deque.rs
+++ b/src/liballoc/collections/vec_deque.rs
@@ -1848,6 +1848,20 @@ impl<T> VecDeque<T> {
     /// buf.retain(|&x| x%2 == 0);
     /// assert_eq!(buf, [2, 4]);
     /// ```
+    ///
+    /// The exact order may be useful for tracking external state, like an index.
+    ///
+    /// ```
+    /// use std::collections::VecDeque;
+    ///
+    /// let mut buf = VecDeque::new();
+    /// buf.extend(1..6);
+    ///
+    /// let keep = [false, true, true, false, true];
+    /// let mut i = 0;
+    /// buf.retain(|_| (keep[i], i += 1).0);
+    /// assert_eq!(buf, [2, 3, 5]);
+    /// ```
     #[stable(feature = "vec_deque_retain", since = "1.4.0")]
     pub fn retain<F>(&mut self, mut f: F)
         where F: FnMut(&T) -> bool