use std::fmt;
use std::slice::Iter;
-use std::vec::Vec;
+use std::vec::{Vec, IntoIter};
use syntax::codemap::{Span, DUMMY_SP};
///////////////////////////////////////////////////////////////////////////
pub fns: Vec<T>,
}
-impl<T:fmt::Show> fmt::Show for VecPerParamSpace<T> {
+impl<T: fmt::Debug> fmt::Debug for VecPerParamSpace<T> {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
try!(write!(fmt, "VecPerParamSpace {{"));
for space in ParamSpace::all().iter() {
self.content.insert(limit, value);
}
+ /// Appends `values` to the vector associated with `space`.
+ ///
+ /// Unlike the `extend` method in `Vec`, this should not be assumed
+ /// to be a cheap operation (even when amortized over many calls).
+ pub fn extend<I:Iterator<Item=T>>(&mut self, space: ParamSpace, mut values: I) {
+ // This could be made more efficient, obviously.
+ for item in values {
+ self.push(space, item);
+ }
+ }
+
pub fn pop(&mut self, space: ParamSpace) -> Option<T> {
let (start, limit) = self.limits(space);
if start == limit {
self.content.iter()
}
+ pub fn into_iter(self) -> IntoIter<T> {
+ self.content.into_iter()
+ }
+
pub fn iter_enumerated<'a>(&'a self) -> EnumeratedItems<'a,T> {
EnumeratedItems::new(self)
}
self.content.as_slice()
}
- pub fn to_vec(self) -> Vec<T> {
+ pub fn into_vec(self) -> Vec<T> {
self.content
}