@@ -255,11 +255,8 @@ impl<K:Hash + Eq,V> HashMap<K, V> {
255
255
let len_buckets = self . buckets . len ( ) ;
256
256
let bucket = self . buckets [ idx] . take ( ) ;
257
257
258
- let value = match bucket {
259
- None => None ,
260
- Some ( Bucket { value, _} ) => {
261
- Some ( value)
262
- } ,
258
+ let value = do bucket. map_consume |bucket| {
259
+ bucket. value
263
260
} ;
264
261
265
262
/* re-inserting buckets may cause changes in size, so remember
@@ -505,7 +502,6 @@ impl<K: Hash + Eq, V> HashMap<K, V> {
505
502
// `consume_rev_iter` is more efficient than `consume_iter` for vectors
506
503
HashMapConsumeIterator { iter : self . buckets . consume_rev_iter ( ) }
507
504
}
508
-
509
505
}
510
506
511
507
impl < K : Hash + Eq , V : Clone > HashMap < K , V > {
@@ -524,14 +520,12 @@ impl<K:Hash + Eq,V:Eq> Eq for HashMap<K, V> {
524
520
fn eq ( & self , other : & HashMap < K , V > ) -> bool {
525
521
if self . len ( ) != other. len ( ) { return false ; }
526
522
527
- for self . iter( ) . advance |( key, value) | {
523
+ do self. iter ( ) . all |( key, value) | {
528
524
match other. find ( key) {
529
- None => return false ,
530
- Some ( v) => if value != v { return false } ,
525
+ None => false ,
526
+ Some ( v) => value == v
531
527
}
532
528
}
533
-
534
- true
535
529
}
536
530
537
531
fn ne ( & self , other : & HashMap < K , V > ) -> bool { !self . eq ( other) }
0 commit comments