@@ -1373,16 +1373,19 @@ impl<T> [T] {
1373
1373
/// a.rotate(k);
1374
1374
/// assert_eq!(&a, &[1, 2, 3, 4, 5, 6, 7]);
1375
1375
///
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
+ /// }
1382
1383
/// }
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]);
1386
1389
/// ```
1387
1390
#[ unstable( feature = "slice_rotate" , issue = "123456789" ) ]
1388
1391
pub fn rotate ( & mut self , mid : usize ) -> usize {
0 commit comments