- /// Visit all key-value pairs in order
- pub fn each<'a>(&'a self, it: &fn(&uint, &'a V) -> bool) -> bool {
- for i in range(0u, self.v.len()) {
- match self.v[i] {
- Some(ref elt) => if !it(&i, elt) { return false; },
- None => ()
- }
- }
- true
- }
-
- /// Visit all keys in order
- pub fn each_key(&self, blk: &fn(key: &uint) -> bool) -> bool {
- self.each(|k, _| blk(k))
- }
-
- /// Visit all values in order
- pub fn each_value<'a>(&'a self, blk: &fn(value: &'a V) -> bool) -> bool {
- self.each(|_, v| blk(v))
- }
-
- /// Iterate over the map and mutate the contained values
- pub fn mutate_values(&mut self, it: &fn(&uint, &mut V) -> bool) -> bool {
- for i in range(0, self.v.len()) {
- match self.v[i] {
- Some(ref mut elt) => if !it(&i, elt) { return false; },
- None => ()
- }
- }
- true
- }
-
- /// Visit all key-value pairs in reverse order
- pub fn each_reverse<'a>(&'a self, it: &fn(uint, &'a V) -> bool) -> bool {
- do uint::range_rev(self.v.len(), 0) |i| {
- match self.v[i] {
- Some(ref elt) => it(i, elt),
- None => true
- }
- }
- }
-