]> git.lizzy.rs Git - rust.git/commitdiff
Change the doctest example to slide
authorScott McMurray <scottmcm@users.noreply.github.com>
Mon, 1 May 2017 16:17:21 +0000 (09:17 -0700)
committerScott McMurray <scottmcm@users.noreply.github.com>
Sun, 21 May 2017 08:55:43 +0000 (01:55 -0700)
Batch-insert is better done with Vec::splice

src/libcollections/slice.rs

index c4c20848caae65a22d09ba342d2ce1a11aee3150..c0b9f01dc4c66f8dc5b564b43d5b39ad8eb32f64 100644 (file)
@@ -1373,16 +1373,19 @@ pub fn sort_unstable_by_key<B, F>(&mut self, f: F)
     /// a.rotate(k);
     /// assert_eq!(&a, &[1, 2, 3, 4, 5, 6, 7]);
     ///
-    /// fn extend_at<T, I>(v: &mut Vec<T>, index: usize, iter: I)
-    ///     where I: Iterator<Item=T>
-    /// {
-    ///     let mid = v.len() - index;
-    ///     v.extend(iter);
-    ///     v[index..].rotate(mid);
+    /// use std::ops::Range;
+    /// fn slide<T>(slice: &mut [T], range: Range<usize>, to: usize) {
+    ///     if to < range.start {
+    ///         slice[to..range.end].rotate(range.start-to);
+    ///     } else if to > range.end {
+    ///         slice[range.start..to].rotate(range.end-range.start);
+    ///     }
     /// }
-    /// let mut v = (0..10).collect();
-    /// extend_at(&mut v, 7, 100..104);
-    /// assert_eq!(&v, &[0, 1, 2, 3, 4, 5, 6, 100, 101, 102, 103, 7, 8, 9]);
+    /// let mut v: Vec<_> = (0..10).collect();
+    /// slide(&mut v, 1..4, 7);
+    /// assert_eq!(&v, &[0, 4, 5, 6, 1, 2, 3, 7, 8, 9]);
+    /// slide(&mut v, 6..8, 1);
+    /// assert_eq!(&v, &[0, 3, 7, 4, 5, 6, 1, 2, 8, 9]);
     /// ```
     #[unstable(feature = "slice_rotate", issue = "123456789")]
     pub fn rotate(&mut self, mid: usize) -> usize {