diff options
| author | bors <bors@rust-lang.org> | 2013-07-22 23:13:41 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-07-22 23:13:41 -0700 |
| commit | 0a5d1a1b81ccb839b44c9251d9ffad2838179f1f (patch) | |
| tree | bbf1ef530b04d13a8a0f4121a06066a1eb432b70 | |
| parent | 43b1eab23be7ce818efa6a0f79facb9134f615c3 (diff) | |
| parent | a8870dfbb527ab1c3f740ddb3d3f73a5ce5e9705 (diff) | |
| download | rust-0a5d1a1b81ccb839b44c9251d9ffad2838179f1f.tar.gz rust-0a5d1a1b81ccb839b44c9251d9ffad2838179f1f.zip | |
auto merge of #7875 : sstewartgallus/rust/fubar, r=alexcrichton
| -rw-r--r-- | src/libstd/hashmap.rs | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/src/libstd/hashmap.rs b/src/libstd/hashmap.rs index 56774560d1d..deeda501942 100644 --- a/src/libstd/hashmap.rs +++ b/src/libstd/hashmap.rs @@ -255,11 +255,8 @@ impl<K:Hash + Eq,V> HashMap<K, V> { let len_buckets = self.buckets.len(); let bucket = self.buckets[idx].take(); - let value = match bucket { - None => None, - Some(Bucket{value, _}) => { - Some(value) - }, + let value = do bucket.map_consume |bucket| { + bucket.value }; /* re-inserting buckets may cause changes in size, so remember @@ -505,7 +502,6 @@ impl<K: Hash + Eq, V> HashMap<K, V> { // `consume_rev_iter` is more efficient than `consume_iter` for vectors HashMapConsumeIterator {iter: self.buckets.consume_rev_iter()} } - } impl<K: Hash + Eq, V: Clone> HashMap<K, V> { @@ -524,14 +520,12 @@ impl<K:Hash + Eq,V:Eq> Eq for HashMap<K, V> { fn eq(&self, other: &HashMap<K, V>) -> bool { if self.len() != other.len() { return false; } - for self.iter().advance |(key, value)| { + do self.iter().all |(key, value)| { match other.find(key) { - None => return false, - Some(v) => if value != v { return false }, + None => false, + Some(v) => value == v } } - - true } fn ne(&self, other: &HashMap<K, V>) -> bool { !self.eq(other) } |
