diff options
| author | Huon Wilson <dbau.pp+github@gmail.com> | 2015-03-02 17:50:47 +1100 |
|---|---|---|
| committer | Huon Wilson <dbau.pp+github@gmail.com> | 2015-03-02 17:54:18 +1100 |
| commit | 25ad3ba3cb0e6f2efd14ff5199d29542e125a667 (patch) | |
| tree | da1f1eea9f446525b4edad93a4c3d8d9a3dd3297 | |
| parent | 157614249594f187f421cd97f928e64c5ab5c1fa (diff) | |
| download | rust-25ad3ba3cb0e6f2efd14ff5199d29542e125a667.tar.gz rust-25ad3ba3cb0e6f2efd14ff5199d29542e125a667.zip | |
Manual Clone for Windows/Chunks.
`#[derive(Clone)]` unnecessarily requires the element type to also be `Clone`.
| -rw-r--r-- | src/libcore/slice.rs | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/libcore/slice.rs b/src/libcore/slice.rs index 5b78da34edd..f99cfbaab5d 100644 --- a/src/libcore/slice.rs +++ b/src/libcore/slice.rs @@ -1167,13 +1167,23 @@ forward_iterator! { SplitNMut: T, &'a mut [T] } forward_iterator! { RSplitNMut: T, &'a mut [T] } /// An iterator over overlapping subslices of length `size`. -#[derive(Clone)] #[stable(feature = "rust1", since = "1.0.0")] pub struct Windows<'a, T:'a> { v: &'a [T], size: usize } +// FIXME(#19839) Remove in favor of `#[derive(Clone)]` +#[stable(feature = "rust1", since = "1.0.0")] +impl<'a, T> Clone for Windows<'a, T> { + fn clone(&self) -> Windows<'a, T> { + Windows { + v: self.v, + size: self.size, + } + } +} + #[stable(feature = "rust1", since = "1.0.0")] impl<'a, T> Iterator for Windows<'a, T> { type Item = &'a [T]; @@ -1239,13 +1249,23 @@ impl<'a, T> RandomAccessIterator for Windows<'a, T> { /// /// When the slice len is not evenly divided by the chunk size, the last slice /// of the iteration will be the remainder. -#[derive(Clone)] #[stable(feature = "rust1", since = "1.0.0")] pub struct Chunks<'a, T:'a> { v: &'a [T], size: usize } +// FIXME(#19839) Remove in favor of `#[derive(Clone)]` +#[stable(feature = "rust1", since = "1.0.0")] +impl<'a, T> Clone for Chunks<'a, T> { + fn clone(&self) -> Chunks<'a, T> { + Chunks { + v: self.v, + size: self.size, + } + } +} + #[stable(feature = "rust1", since = "1.0.0")] impl<'a, T> Iterator for Chunks<'a, T> { type Item = &'a [T]; |
