diff options
| author | Daniel Micay <danielmicay@gmail.com> | 2013-08-25 23:34:43 -0400 |
|---|---|---|
| committer | Daniel Micay <danielmicay@gmail.com> | 2013-08-27 13:47:15 -0400 |
| commit | 20567a0c3c306853180e428f83302add09b5cb8c (patch) | |
| tree | d08d554fe90c6bb0e8f226c39c308d616d5751b1 | |
| parent | 0baa92707aed3812a7464a891869a40ba4921cbb (diff) | |
| download | rust-20567a0c3c306853180e428f83302add09b5cb8c.tar.gz rust-20567a0c3c306853180e428f83302add09b5cb8c.zip | |
vec: implement `DeepClone`
| -rw-r--r-- | src/libstd/vec.rs | 11 |
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 [] } |
