vec: implement DeepClone

This commit is contained in:
Daniel Micay 2013-08-25 23:34:43 -04:00
parent 0baa92707a
commit 20567a0c3c

View File

@ -59,7 +59,7 @@
#[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 fn copy_memory(dst: &mut [u8], src: &[u8], count: uint) {
}
}
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 [] }