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
    }
}