use cmp::{Eq, Ordering, TotalEq, TotalOrd};
use container::Container;
use default::Default;
+use fmt;
use iter::{DoubleEndedIterator, FromIterator, Iterator};
use libc::{free, c_void};
use mem::{size_of, move_val_init};
self.push((*element).clone())
}
}
+
+
+ pub fn grow(&mut self, n: uint, initval: &T) {
+ let new_len = self.len() + n;
+ self.reserve(new_len);
+ let mut i: uint = 0u;
+
+ while i < n {
+ self.push((*initval).clone());
+ i += 1u;
+ }
+ }
+
+ pub fn grow_set(&mut self, index: uint, initval: &T, val: T) {
+ let l = self.len();
+ if index >= l {
+ self.grow(index - l + 1u, initval);
+ }
+ *self.get_mut(index) = val;
+ }
}
impl<T:Clone> Clone for Vec<T> {
}
}
+impl<T:fmt::Show> fmt::Show for Vec<T> {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ self.as_slice().fmt(f)
+ }
+}
+
pub struct MoveItems<T> {
priv allocation: *mut c_void, // the block of memory allocated for the vector
priv iter: Items<'static, T>