diff options
| author | Scott McMurray <scottmcm@users.noreply.github.com> | 2017-05-01 09:17:21 -0700 |
|---|---|---|
| committer | Scott McMurray <scottmcm@users.noreply.github.com> | 2017-05-21 01:55:43 -0700 |
| commit | ebc84895266920cb519b6c4086e35c7ac99fe210 (patch) | |
| tree | 23be821bafa62461304d817d8afe1de32e916a4d /src | |
| parent | c05676b97f2151242a07e98bbde53e9c5d7f1e7a (diff) | |
| download | rust-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.rs | 21 |
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 { |
