From 198cc3d850136582651489328fec221a2b98bfef Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Fri, 28 Feb 2014 12:54:01 -0800 Subject: libsyntax: Fix errors arising from the automated `~[T]` conversion --- src/libstd/vec_ng.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/libstd') diff --git a/src/libstd/vec_ng.rs b/src/libstd/vec_ng.rs index 6cc3ccc3452..9b6acdd9b9e 100644 --- a/src/libstd/vec_ng.rs +++ b/src/libstd/vec_ng.rs @@ -16,6 +16,7 @@ use clone::Clone; 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}; @@ -82,6 +83,26 @@ impl Vec { 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 Clone for Vec { @@ -388,6 +409,12 @@ impl Default for Vec { } } +impl fmt::Show for Vec { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + self.as_slice().fmt(f) + } +} + pub struct MoveItems { priv allocation: *mut c_void, // the block of memory allocated for the vector priv iter: Items<'static, T> -- cgit 1.4.1-3-g733a5