|
14 | 14 | use cast::{forget, transmute}; |
15 | 15 | use clone::Clone; |
16 | 16 | use cmp::{Ord, Eq, Ordering, TotalEq, TotalOrd}; |
17 | | -use container::Container; |
| 17 | +use container::{Container, Mutable}; |
18 | 18 | use default::Default; |
19 | 19 | use fmt; |
20 | | -use iter::{DoubleEndedIterator, FromIterator, Extendable, Iterator}; |
| 20 | +use iter::{DoubleEndedIterator, FromIterator, Extendable, Iterator, Rev}; |
21 | 21 | use libc::{free, c_void}; |
22 | 22 | use mem::{size_of, move_val_init}; |
23 | 23 | use mem; |
@@ -68,11 +68,7 @@ impl<T> Vec<T> { |
68 | 68 |
|
69 | 69 | impl<T: Clone> Vec<T> { |
70 | 70 | pub fn from_slice(values: &[T]) -> Vec<T> { |
71 | | - let mut vector = Vec::new(); |
72 | | - for value in values.iter() { |
73 | | - vector.push((*value).clone()) |
74 | | - } |
75 | | - vector |
| 71 | + values.iter().map(|x| x.clone()).collect() |
76 | 72 | } |
77 | 73 |
|
78 | 74 | pub fn from_elem(length: uint, value: T) -> Vec<T> { |
@@ -292,9 +288,8 @@ impl<T> Vec<T> { |
292 | 288 | } |
293 | 289 |
|
294 | 290 | #[inline] |
295 | | - pub fn move_rev_iter(mut self) -> MoveItems<T> { |
296 | | - self.reverse(); |
297 | | - self.move_iter() |
| 291 | + pub fn move_rev_iter(self) -> Rev<MoveItems<T>> { |
| 292 | + self.move_iter().rev() |
298 | 293 | } |
299 | 294 |
|
300 | 295 | #[inline] |
@@ -437,9 +432,12 @@ impl<T> Vec<T> { |
437 | 432 | pub fn as_ptr(&self) -> *T { |
438 | 433 | self.as_slice().as_ptr() |
439 | 434 | } |
| 435 | +} |
440 | 436 |
|
| 437 | +impl<T> Mutable for Vec<T> { |
| 438 | + /// Clear the vector, removing all values. |
441 | 439 | #[inline] |
442 | | - pub fn clear(&mut self) { |
| 440 | + fn clear(&mut self) { |
443 | 441 | self.truncate(0) |
444 | 442 | } |
445 | 443 | } |
|
0 commit comments