From 4d172833710f580c777cb5c1938a8991cc38cd08 Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Wed, 22 Sep 2010 17:04:08 -0700 Subject: Add 'items' iter to hashmap. --- src/lib/map.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/lib') 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 = -- cgit v1.2.3