diff options
| author | bors <bors@rust-lang.org> | 2015-12-04 22:52:02 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-12-04 22:52:02 +0000 |
| commit | e22a64e8d8d4da46c74f878ce1c23ad1c88982e8 (patch) | |
| tree | 1ced0483d7e1e8d157c3049faa3eabc74274e565 /src/libcore/array.rs | |
| parent | 55a4e050921a8f72cff28b0ab6e58376382daf32 (diff) | |
| parent | 6dff9d03d9fd8d7eed6dc8fedd4c0bc85a3d7478 (diff) | |
| download | rust-e22a64e8d8d4da46c74f878ce1c23ad1c88982e8.tar.gz rust-e22a64e8d8d4da46c74f878ce1c23ad1c88982e8.zip | |
Auto merge of #30130 - tbu-:pr_array_clone, r=alexcrichton
[breaking-change]
Diffstat (limited to 'src/libcore/array.rs')
| -rw-r--r-- | src/libcore/array.rs | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/src/libcore/array.rs b/src/libcore/array.rs index c986914440d..97ad99fe0ff 100644 --- a/src/libcore/array.rs +++ b/src/libcore/array.rs @@ -27,7 +27,7 @@ use default::Default; use fmt; use hash::{Hash, self}; use iter::IntoIterator; -use marker::{Copy, Sized, Unsize}; +use marker::{Sized, Unsize}; use option::Option; use slice::{Iter, IterMut, SliceExt}; @@ -95,13 +95,6 @@ macro_rules! array_impls { } #[stable(feature = "rust1", since = "1.0.0")] - impl<T:Copy> Clone for [T; $N] { - fn clone(&self) -> [T; $N] { - *self - } - } - - #[stable(feature = "rust1", since = "1.0.0")] impl<T: Hash> Hash for [T; $N] { fn hash<H: hash::Hasher>(&self, state: &mut H) { Hash::hash(&self[..], state) @@ -210,3 +203,30 @@ macro_rules! array_impl_default { } array_impl_default!{32, T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T} + +macro_rules! array_impl_clone { + {$n:expr, $i:expr, $($idx:expr,)*} => { + #[stable(feature = "rust1", since = "1.0.0")] + impl<T: Clone> Clone for [T; $n] { + fn clone(&self) -> [T; $n] { + [self[$i-$i].clone(), $(self[$i-$idx].clone()),*] + } + } + array_impl_clone!{$i, $($idx,)*} + }; + {$n:expr,} => { + #[stable(feature = "rust1", since = "1.0.0")] + impl<T: Clone> Clone for [T; 0] { + fn clone(&self) -> [T; 0] { + [] + } + } + }; +} + +array_impl_clone! { + 32, 31, 30, + 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, + 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, + 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, +} |
