aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2010-09-22 17:04:08 -0700
committerGraydon Hoare <[email protected]>2010-09-22 17:04:08 -0700
commit4d172833710f580c777cb5c1938a8991cc38cd08 (patch)
tree73efda613f039b25bf0bd0d8cd9cf0b4a168b456
parentReformat standard library; no code changes. (diff)
downloadrust-4d172833710f580c777cb5c1938a8991cc38cd08.tar.xz
rust-4d172833710f580c777cb5c1938a8991cc38cd08.zip
Add 'items' iter to hashmap.
-rw-r--r--src/lib/map.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/lib/map.rs b/src/lib/map.rs
index 1ad83957..9ebfd4b6 100644
--- a/src/lib/map.rs
+++ b/src/lib/map.rs
@@ -20,6 +20,7 @@ type hashmap[K, V] = obj {
fn find(&K key) -> util.option[V];
fn remove(&K key) -> util.option[V];
fn rehash();
+ iter items() -> tup(K,V);
};
fn mk_hashmap[K, V](&hashfn[K] hasher, &eqfn[K] eqer) -> hashmap[K, V] {
@@ -216,6 +217,17 @@ fn mk_hashmap[K, V](&hashfn[K] hasher, &eqfn[K] eqer) -> hashmap[K, V] {
rehash[K, V](hasher, eqer, bkts, nbkts, newbkts, nbkts);
bkts = newbkts;
}
+
+ iter items() -> tup(K,V) {
+ for (bucket[K,V] b in bkts) {
+ alt (b) {
+ case(some[K,V](?k,?v)) {
+ put tup(k,v);
+ }
+ case (_) { }
+ }
+ }
+ }
}
let vec[mutable bucket[K, V]] bkts =