diff options
| author | Roy Frostig <[email protected]> | 2010-08-25 17:42:36 -0700 |
|---|---|---|
| committer | Roy Frostig <[email protected]> | 2010-08-25 17:42:36 -0700 |
| commit | c40fed5804f523cc90389941f1a16e5ee956ce5f (patch) | |
| tree | c4202d7894cfa434c1b4d3fac0a03ff47116a698 /src/lib | |
| parent | Insure bools remain 0x1 or 0x0 by having boolean-NOT not just be a simple bit... (diff) | |
| download | rust-c40fed5804f523cc90389941f1a16e5ee956ce5f.tar.xz rust-c40fed5804f523cc90389941f1a16e5ee956ce5f.zip | |
Actually switch to using the bigger hashmap once a it finishes growing and rehashing.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/map.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lib/map.rs b/src/lib/map.rs index b6162e02..ced31513 100644 --- a/src/lib/map.rs +++ b/src/lib/map.rs @@ -74,7 +74,7 @@ fn mk_hashmap[K, V](&hashfn[K] hasher, &eqfn[K] eqer) -> hashmap[K, V] { { let uint i = 0u; while (i < nbkts) { - let uint j = (hash[K](hasher, nbkts, key, i)); + let uint j = hash[K](hasher, nbkts, key, i); alt (bkts.(j)) { case (some[K, V](k, _)) { if (eqer(key, k)) { @@ -145,10 +145,12 @@ fn mk_hashmap[K, V](&hashfn[K] hasher, &eqfn[K] eqer) -> hashmap[K, V] { let util.rational load = rec(num=(nelts + 1u) as int, den=nbkts as int); if (!util.rational_leq(load, lf)) { let uint nnewbkts = _uint.next_power_of_two(nbkts + 1u); - let vec[mutable bucket[K, V]] newbkts = make_buckets[K, V](nnewbkts); rehash[K, V](hasher, eqer, bkts, nbkts, newbkts, nnewbkts); + bkts = newbkts; + nbkts = nnewbkts; } + if (insert_common[K, V](hasher, eqer, bkts, nbkts, key, val)) { nelts += 1u; ret true; |