diff options
| author | Graydon Hoare <[email protected]> | 2010-09-22 17:04:08 -0700 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2010-09-22 17:04:08 -0700 |
| commit | 4d172833710f580c777cb5c1938a8991cc38cd08 (patch) | |
| tree | 73efda613f039b25bf0bd0d8cd9cf0b4a168b456 | |
| parent | Reformat standard library; no code changes. (diff) | |
| download | rust-4d172833710f580c777cb5c1938a8991cc38cd08.tar.xz rust-4d172833710f580c777cb5c1938a8991cc38cd08.zip | |
Add 'items' iter to hashmap.
| -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 = |