diff options
| author | Daniel Micay <danielmicay@gmail.com> | 2013-02-07 20:20:39 -0500 |
|---|---|---|
| committer | Daniel Micay <danielmicay@gmail.com> | 2013-02-07 22:04:38 -0500 |
| commit | fe841f3e56291f2b1521fb124fcf9277b931c53f (patch) | |
| tree | 93c94ea56c33048d23ba8a84a20046fe1ad4ac17 /src/libstd | |
| parent | a2f922f28264547429ca8abd064623be272c8f3b (diff) | |
| download | rust-fe841f3e56291f2b1521fb124fcf9277b931c53f.tar.gz rust-fe841f3e56291f2b1521fb124fcf9277b931c53f.zip | |
implement ReverseIter for SmallIntMap
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/smallintmap.rs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/libstd/smallintmap.rs b/src/libstd/smallintmap.rs index 9789dbea131..9642dd0c3dd 100644 --- a/src/libstd/smallintmap.rs +++ b/src/libstd/smallintmap.rs @@ -14,7 +14,7 @@ */ use core::container::{Container, Mutable, Map, Set}; -use core::iter::BaseIter; +use core::iter::{BaseIter, ReverseIter}; use core::option::{Some, None}; use core::prelude::*; @@ -36,6 +36,18 @@ impl<V> SmallIntMap<V>: BaseIter<(uint, &V)> { pure fn size_hint(&self) -> Option<uint> { Some(self.len()) } } +impl<V> SmallIntMap<V>: ReverseIter<(uint, &V)> { + /// Visit all key-value pairs in reverse order + pure fn each_reverse(&self, it: fn(&(uint, &self/V)) -> bool) { + for uint::range_rev(self.v.len(), 0) |i| { + match self.v[i - 1] { + Some(ref elt) => if !it(&(i - 1, elt)) { break }, + None => () + } + } + } +} + impl<V> SmallIntMap<V>: Container { /// Return the number of elements in the map pure fn len(&self) -> uint { |
