1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
pub trait VecUtils<T> { fn unshift(&mut self,v: T); fn shift(&mut self) -> T; /// Replaces old Iterator::count fn count(&self,f: &Fn(&T) -> bool) -> usize; } impl<T> VecUtils<T> for Vec<T> { fn unshift(&mut self,v: T) { self.insert(0,v); } fn shift(&mut self) -> T { self.remove(0) } /// Replaces old Iterator::count fn count(&self,f: &Fn(&T) -> bool) -> usize { let mut count = 0; for value in self.iter() { if f(value) { count += 1; } } count } }