]> git.lizzy.rs Git - rust.git/commitdiff
core: implement Clone for primitive types
authorAndrew Paseltiner <apaseltiner@gmail.com>
Sat, 9 Mar 2013 17:14:12 +0000 (12:14 -0500)
committerAndrew Paseltiner <apaseltiner@gmail.com>
Sat, 9 Mar 2013 17:14:12 +0000 (12:14 -0500)
src/libcore/clone.rs
src/test/run-pass/deriving-clone-struct.rs

index 6580ce55ddd66dda39b5e1b9ca99ca8a42bc769e..297c4438039f097b63e9528a08fc4ef18266ee66 100644 (file)
@@ -19,3 +19,31 @@ impl Clone for () {
     #[inline(always)]
     fn clone(&self) -> () { () }
 }
+
+macro_rules! clone_impl(
+    ($t:ty) => {
+        impl Clone for $t {
+            #[inline(always)]
+            fn clone(&self) -> $t { *self }
+        }
+    }
+)
+
+clone_impl!(int)
+clone_impl!(i8)
+clone_impl!(i16)
+clone_impl!(i32)
+clone_impl!(i64)
+
+clone_impl!(uint)
+clone_impl!(u8)
+clone_impl!(u16)
+clone_impl!(u32)
+clone_impl!(u64)
+
+clone_impl!(float)
+clone_impl!(f32)
+clone_impl!(f64)
+
+clone_impl!(bool)
+clone_impl!(char)
index 2f371c8920be5ab1eedde6753969de076b9e5998..07830e7ee096b386b7032908ae3540e11f1aba81 100644 (file)
@@ -1,8 +1,24 @@
 #[deriving_clone]
 struct S {
-    foo: (),
-    bar: ()
+    _int: int,
+    _i8: i8,
+    _i16: i16,
+    _i32: i32,
+    _i64: i64,
+
+    _uint: uint,
+    _u8: u8,
+    _u16: u16,
+    _u32: u32,
+    _u64: u64,
+
+    _float: float,
+    _f32: f32,
+    _f64: f64,
+
+    _bool: bool,
+    _char: char,
+    _nil: ()
 }
 
 fn main() {}
-