Add 'items' iter to hashmap.

This commit is contained in:
Graydon Hoare 2010-09-22 17:04:08 -07:00
parent 2880ecd73f
commit 4d17283371

View file

@ -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 =