about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorScott McMurray <scottmcm@users.noreply.github.com>2017-05-01 09:17:21 -0700
committerScott McMurray <scottmcm@users.noreply.github.com>2017-05-21 01:55:43 -0700
commitebc84895266920cb519b6c4086e35c7ac99fe210 (patch)
tree23be821bafa62461304d817d8afe1de32e916a4d /src
parentc05676b97f2151242a07e98bbde53e9c5d7f1e7a (diff)
downloadrust-ebc84895266920cb519b6c4086e35c7ac99fe210.tar.gz
rust-ebc84895266920cb519b6c4086e35c7ac99fe210.zip
Change the doctest example to slide
Batch-insert is better done with Vec::splice
Diffstat (limited to 'src')
-rw-r--r--src/libcollections/slice.rs21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/libcollections/slice.rs b/src/libcollections/slice.rs
index c4c20848caa..c0b9f01dc4c 100644
--- a/src/libcollections/slice.rs
+++ b/src/libcollections/slice.rs
@@ -1373,16 +1373,19 @@ impl<T> [T] {
     /// 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 {