]> git.lizzy.rs Git - rust.git/commitdiff
Implement `Clone` for arrays without using slice patterns
authorTobias Bucher <tobiasbucher5991@gmail.com>
Tue, 1 Dec 2015 19:53:08 +0000 (19:53 +0000)
committerTobias Bucher <tobiasbucher5991@gmail.com>
Fri, 4 Dec 2015 09:16:48 +0000 (09:16 +0000)
src/libcore/array.rs
src/libcore/lib.rs

index 1d8a78201df004ff4541bbb9c0f0ae1511a5cccd..06ff6b9d799f322848c005ba0e5c5082592ad606 100644 (file)
@@ -205,15 +205,15 @@ 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, $t:ident $($ts:ident)*} => {
+    {$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] {
-                let &[ref $t, $(ref $ts),*] = self;
-                [$t.clone(), $($ts.clone()),*]
+                let temp = [&self[$i], $(&self[$idx]),*];
+                [temp[$i].clone(), $(temp[$idx].clone()),*]
             }
         }
-        array_impl_clone!{($n - 1), $($ts)*}
+        array_impl_clone!{$i, $($idx,)*}
     };
     {$n:expr,} => {
         #[stable(feature = "rust1", since = "1.0.0")]
@@ -225,9 +225,9 @@ macro_rules! array_impl_clone {
     };
 }
 
-array_impl_clone! { 32,
-    t00 t01 t02 t03 t04 t05 t06 t07 t08 t09
-    t10 t11 t12 t13 t14 t15 t16 t17 t18 t19
-    t20 t21 t22 t23 t24 t25 t26 t27 t28 t29
-    t30 t31
+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,
 }
index d65f9d60710fbea72bd2cf70d6ccbb4da6731bda..f8bda4b6b2bc24c15fa6ccbde427bf311603226c 100644 (file)
@@ -85,7 +85,6 @@
 #![feature(unwind_attributes)]
 #![cfg_attr(stage0, feature(simd))]
 #![cfg_attr(not(stage0), feature(repr_simd, platform_intrinsics))]
-#![feature(slice_patterns)]
 #![feature(staged_api)]
 #![feature(unboxed_closures)]