@@ -27,7 +27,7 @@ use default::Default;
27
27
use fmt;
28
28
use hash:: { Hash , self } ;
29
29
use iter:: IntoIterator ;
30
- use marker:: { Copy , Sized , Unsize } ;
30
+ use marker:: { Sized , Unsize } ;
31
31
use option:: Option ;
32
32
use slice:: { Iter , IterMut , SliceExt } ;
33
33
@@ -94,13 +94,6 @@ macro_rules! array_impls {
94
94
}
95
95
}
96
96
97
- #[ stable( feature = "rust1" , since = "1.0.0" ) ]
98
- impl <T : Copy > Clone for [ T ; $N] {
99
- fn clone( & self ) -> [ T ; $N] {
100
- * self
101
- }
102
- }
103
-
104
97
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
105
98
impl <T : Hash > Hash for [ T ; $N] {
106
99
fn hash<H : hash:: Hasher >( & self , state: & mut H ) {
@@ -210,3 +203,30 @@ macro_rules! array_impl_default {
210
203
}
211
204
212
205
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 }
206
+
207
+ macro_rules! array_impl_clone {
208
+ { $n: expr, $i: expr, $( $idx: expr, ) * } => {
209
+ #[ stable( feature = "rust1" , since = "1.0.0" ) ]
210
+ impl <T : Clone > Clone for [ T ; $n] {
211
+ fn clone( & self ) -> [ T ; $n] {
212
+ [ self [ $i-$i] . clone( ) , $( self [ $i-$idx] . clone( ) ) ,* ]
213
+ }
214
+ }
215
+ array_impl_clone!{ $i, $( $idx, ) * }
216
+ } ;
217
+ { $n: expr, } => {
218
+ #[ stable( feature = "rust1" , since = "1.0.0" ) ]
219
+ impl <T : Clone > Clone for [ T ; 0 ] {
220
+ fn clone( & self ) -> [ T ; 0 ] {
221
+ [ ]
222
+ }
223
+ }
224
+ } ;
225
+ }
226
+
227
+ array_impl_clone ! {
228
+ 32 , 31 , 30 ,
229
+ 29 , 28 , 27 , 26 , 25 , 24 , 23 , 22 , 21 , 20 ,
230
+ 19 , 18 , 17 , 16 , 15 , 14 , 13 , 12 , 11 , 10 ,
231
+ 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 , 0 ,
232
+ }
0 commit comments