diff --git a/src/libstd/vec_ng.rs b/src/libstd/vec_ng.rs index f625e638ae881..a195ce8deaebc 100644 --- a/src/libstd/vec_ng.rs +++ b/src/libstd/vec_ng.rs @@ -14,10 +14,10 @@ use cast::{forget, transmute}; use clone::Clone; use cmp::{Ord, Eq, Ordering, TotalEq, TotalOrd}; -use container::Container; +use container::{Container, Mutable}; use default::Default; use fmt; -use iter::{DoubleEndedIterator, FromIterator, Extendable, Iterator}; +use iter::{DoubleEndedIterator, FromIterator, Extendable, Iterator, Rev}; use libc::{free, c_void}; use mem::{size_of, move_val_init}; use mem; @@ -68,11 +68,7 @@ impl Vec { impl Vec { pub fn from_slice(values: &[T]) -> Vec { - let mut vector = Vec::new(); - for value in values.iter() { - vector.push((*value).clone()) - } - vector + values.iter().map(|x| x.clone()).collect() } pub fn from_elem(length: uint, value: T) -> Vec { @@ -292,9 +288,8 @@ impl Vec { } #[inline] - pub fn move_rev_iter(mut self) -> MoveItems { - self.reverse(); - self.move_iter() + pub fn move_rev_iter(self) -> Rev> { + self.move_iter().rev() } #[inline] @@ -437,9 +432,12 @@ impl Vec { pub fn as_ptr(&self) -> *T { self.as_slice().as_ptr() } +} +impl Mutable for Vec { + /// Clear the vector, removing all values. #[inline] - pub fn clear(&mut self) { + fn clear(&mut self) { self.truncate(0) } }