diff --git a/src/libstd/treemap.rs b/src/libstd/treemap.rs index da83c7b789b0..f57f4fd31245 100644 --- a/src/libstd/treemap.rs +++ b/src/libstd/treemap.rs @@ -14,6 +14,7 @@ use core::container::{Container, Mutable, Map, Set}; use core::cmp::{Eq, Ord}; +use core::iter::{BaseIter, ReverseIter}; use core::option::{Option, Some, None}; use core::prelude::*; @@ -103,7 +104,7 @@ impl TreeMap: Ord { } } -impl TreeMap: iter::BaseIter<(&K, &V)> { +impl TreeMap: BaseIter<(&K, &V)> { /// Visit all key-value pairs in order pure fn each(&self, f: fn(&(&self/K, &self/V)) -> bool) { each(&self.root, f) @@ -111,6 +112,13 @@ impl TreeMap: iter::BaseIter<(&K, &V)> { pure fn size_hint(&self) -> Option { Some(self.len()) } } +impl TreeMap: ReverseIter<(&K, &V)> { + /// Visit all key-value pairs in reverse order + pure fn each_reverse(&self, f: fn(&(&self/K, &self/V)) -> bool) { + each_reverse(&self.root, f); + } +} + impl TreeMap: Container { /// Return the number of elements in the map pure fn len(&self) -> uint { self.length } @@ -180,11 +188,6 @@ impl TreeMap { /// Create an empty TreeMap static pure fn new() -> TreeMap { TreeMap{root: None, length: 0} } - /// Visit all key-value pairs in reverse order - pure fn each_reverse(&self, f: fn(&(&self/K, &self/V)) -> bool) { - each_reverse(&self.root, f); - } - /// Visit all keys in reverse order pure fn each_key_reverse(&self, f: fn(&K) -> bool) { self.each_reverse(|&(k, _)| f(k)) @@ -243,12 +246,19 @@ pub struct TreeSet { priv map: TreeMap } -impl TreeSet: iter::BaseIter { +impl TreeSet: BaseIter { /// Visit all values in order pure fn each(&self, f: fn(&T) -> bool) { self.map.each_key(f) } pure fn size_hint(&self) -> Option { Some(self.len()) } } +impl TreeSet: ReverseIter { + /// Visit all values in reverse order + pure fn each_reverse(&self, f: fn(&T) -> bool) { + self.map.each_key_reverse(f) + } +} + impl TreeSet: Eq { pure fn eq(&self, other: &TreeSet) -> bool { self.map == other.map } pure fn ne(&self, other: &TreeSet) -> bool { self.map != other.map } @@ -504,11 +514,6 @@ impl TreeSet { /// Create an empty TreeSet static pure fn new() -> TreeSet { TreeSet{map: TreeMap::new()} } - /// Visit all values in reverse order - pure fn each_reverse(&self, f: fn(&T) -> bool) { - self.map.each_key_reverse(f) - } - /// Get a lazy iterator over the values in the set. /// Requires that it be frozen (immutable). pure fn iter(&self) -> TreeSetIterator/&self {