about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorFelix S. Klock II <pnkfelix@pnkfx.org>2014-03-08 21:47:12 +0100
committerFelix S. Klock II <pnkfelix@pnkfx.org>2014-03-08 21:47:12 +0100
commitf978c772ba99955fe8c315963768b603bb8efd41 (patch)
tree30b0fc185b522e76100b172c45c4283a6c18475a /src/libstd
parent15d9acc46cafba48e0c85b3d02c09d7b91ec98e9 (diff)
downloadrust-f978c772ba99955fe8c315963768b603bb8efd41.tar.gz
rust-f978c772ba99955fe8c315963768b603bb8efd41.zip
Incorporated review feedback atop pcwalton's original patches.
(Original PR was #12716; feedback was provided by thestinger and me.)
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/vec_ng.rs20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/libstd/vec_ng.rs b/src/libstd/vec_ng.rs
index f625e638ae8..a195ce8deae 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<T> Vec<T> {
 
 impl<T: Clone> Vec<T> {
     pub fn from_slice(values: &[T]) -> Vec<T> {
-        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<T> {
@@ -292,9 +288,8 @@ impl<T> Vec<T> {
     }
 
     #[inline]
-    pub fn move_rev_iter(mut self) -> MoveItems<T> {
-        self.reverse();
-        self.move_iter()
+    pub fn move_rev_iter(self) -> Rev<MoveItems<T>> {
+        self.move_iter().rev()
     }
 
     #[inline]
@@ -437,9 +432,12 @@ impl<T> Vec<T> {
     pub fn as_ptr(&self) -> *T {
         self.as_slice().as_ptr()
     }
+}
 
+impl<T> Mutable for Vec<T> {
+    /// Clear the vector, removing all values.
     #[inline]
-    pub fn clear(&mut self) {
+    fn clear(&mut self) {
         self.truncate(0)
     }
 }