about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDaniel Micay <danielmicay@gmail.com>2013-08-25 23:34:43 -0400
committerDaniel Micay <danielmicay@gmail.com>2013-08-27 13:47:15 -0400
commit20567a0c3c306853180e428f83302add09b5cb8c (patch)
treed08d554fe90c6bb0e8f226c39c308d616d5751b1
parent0baa92707aed3812a7464a891869a40ba4921cbb (diff)
downloadrust-20567a0c3c306853180e428f83302add09b5cb8c.tar.gz
rust-20567a0c3c306853180e428f83302add09b5cb8c.zip
vec: implement `DeepClone`
-rw-r--r--src/libstd/vec.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/libstd/vec.rs b/src/libstd/vec.rs
index 3e9c4b788fe..556842e6544 100644
--- a/src/libstd/vec.rs
+++ b/src/libstd/vec.rs
@@ -59,7 +59,7 @@ And much, much more.
 #[warn(non_camel_case_types)];
 
 use cast;
-use clone::Clone;
+use clone::{Clone, DeepClone};
 use container::{Container, Mutable};
 use cmp::{Eq, TotalOrd, Ordering, Less, Equal, Greater};
 use cmp;
@@ -2199,13 +2199,20 @@ pub mod bytes {
     }
 }
 
-impl<A:Clone> Clone for ~[A] {
+impl<A: Clone> Clone for ~[A] {
     #[inline]
     fn clone(&self) -> ~[A] {
         self.iter().map(|item| item.clone()).collect()
     }
 }
 
+impl<A: DeepClone> DeepClone for ~[A] {
+    #[inline]
+    fn deep_clone(&self) -> ~[A] {
+        self.iter().map(|item| item.deep_clone()).collect()
+    }
+}
+
 // This works because every lifetime is a sub-lifetime of 'static
 impl<'self, A> Zero for &'self [A] {
     fn zero() -> &'self [A] { &'self [] }