|
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