diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/map.rs | 12 |
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 = |