Skip to content

Commit ebc8489

Browse files
committed
Change the doctest example to slide
Batch-insert is better done with Vec::splice
1 parent c05676b commit ebc8489

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

src/libcollections/slice.rs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)