@@ -1373,16 +1373,19 @@ impl<T> [T] {
13731373 /// a.rotate(k);
13741374 /// assert_eq!(&a, &[1, 2, 3, 4, 5, 6, 7]);
13751375 ///
1376- /// fn extend_at<T, I>(v: &mut Vec<T>, index: usize, iter: I)
1377- /// where I: Iterator<Item=T>
1378- /// {
1379- /// let mid = v.len() - index;
1380- /// v.extend(iter);
1381- /// v[index..].rotate(mid);
1376+ /// use std::ops::Range;
1377+ /// fn slide<T>(slice: &mut [T], range: Range<usize>, to: usize) {
1378+ /// if to < range.start {
1379+ /// slice[to..range.end].rotate(range.start-to);
1380+ /// } else if to > range.end {
1381+ /// slice[range.start..to].rotate(range.end-range.start);
1382+ /// }
13821383 /// }
1383- /// let mut v = (0..10).collect();
1384- /// extend_at(&mut v, 7, 100..104);
1385- /// assert_eq!(&v, &[0, 1, 2, 3, 4, 5, 6, 100, 101, 102, 103, 7, 8, 9]);
1384+ /// let mut v: Vec<_> = (0..10).collect();
1385+ /// slide(&mut v, 1..4, 7);
1386+ /// assert_eq!(&v, &[0, 4, 5, 6, 1, 2, 3, 7, 8, 9]);
1387+ /// slide(&mut v, 6..8, 1);
1388+ /// assert_eq!(&v, &[0, 3, 7, 4, 5, 6, 1, 2, 8, 9]);
13861389 /// ```
13871390 #[ unstable( feature = "slice_rotate" , issue = "123456789" ) ]
13881391 pub fn rotate ( & mut self , mid : usize ) -> usize {
0 commit comments