@@ -28,24 +28,6 @@ pub struct TrieMap<T> {
28
28
priv length : uint
29
29
}
30
30
31
- impl < ' self , T > BaseIter < ( uint , & ' self T ) > for TrieMap < T > {
32
- /// Visit all key-value pairs in order
33
- #[ inline( always) ]
34
- fn each ( & self , f : & fn ( & ( uint , & ' self T ) ) -> bool ) {
35
- self . root . each ( f) ;
36
- }
37
- #[ inline( always) ]
38
- fn size_hint ( & self ) -> Option < uint > { Some ( self . len ( ) ) }
39
- }
40
-
41
- impl < ' self , T > ReverseIter < ( uint , & ' self T ) > for TrieMap < T > {
42
- /// Visit all key-value pairs in reverse order
43
- #[ inline( always) ]
44
- fn each_reverse ( & self , f : & fn ( & ( uint , & ' self T ) ) -> bool ) {
45
- self . root . each_reverse ( f) ;
46
- }
47
- }
48
-
49
31
impl < T > Container for TrieMap < T > {
50
32
/// Return the number of elements in the map
51
33
#[ inline( always) ]
@@ -72,16 +54,22 @@ impl<T> Map<uint, T> for TrieMap<T> {
72
54
self . find ( key) . is_some ( )
73
55
}
74
56
57
+ /// Visit all key-value pairs in order
58
+ #[ inline( always) ]
59
+ fn each ( & self , f : & fn ( & uint , & ' self T ) -> bool ) {
60
+ self . root . each ( f) ;
61
+ }
62
+
75
63
/// Visit all keys in order
76
64
#[ inline( always) ]
77
65
fn each_key ( & self , f : & fn ( & uint ) -> bool ) {
78
- self . each ( |& ( k, _) | f ( & k) )
66
+ self . each ( |k, _| f ( k) )
79
67
}
80
68
81
69
/// Visit all values in order
82
70
#[ inline( always) ]
83
71
fn each_value ( & self , f : & fn ( & T ) -> bool ) {
84
- self . each ( |& ( _, v) | f ( v) )
72
+ self . each ( |_, v| f ( v) )
85
73
}
86
74
87
75
/// Iterate over the map and mutate the contained values
@@ -148,16 +136,22 @@ pub impl<T> TrieMap<T> {
148
136
TrieMap { root : TrieNode :: new ( ) , length : 0 }
149
137
}
150
138
139
+ /// Visit all key-value pairs in reverse order
140
+ #[ inline( always) ]
141
+ fn each_reverse ( & self , f : & fn ( & uint , & ' self T ) -> bool ) {
142
+ self . root . each_reverse ( f) ;
143
+ }
144
+
151
145
/// Visit all keys in reverse order
152
146
#[ inline( always) ]
153
147
fn each_key_reverse ( & self , f : & fn ( & uint ) -> bool ) {
154
- self . each_reverse ( |& ( k, _) | f ( & k) )
148
+ self . each_reverse ( |k, _| f ( k) )
155
149
}
156
150
157
151
/// Visit all values in reverse order
158
152
#[ inline( always) ]
159
153
fn each_value_reverse ( & self , f : & fn ( & T ) -> bool ) {
160
- self . each_reverse ( |& ( _, v) | f ( v) )
154
+ self . each_reverse ( |_, v| f ( v) )
161
155
}
162
156
}
163
157
@@ -239,22 +233,22 @@ impl<T> TrieNode<T> {
239
233
}
240
234
241
235
impl < T > TrieNode < T > {
242
- fn each ( & self , f : & fn ( & ( uint , & ' self T ) ) -> bool ) -> bool {
236
+ fn each ( & self , f : & fn ( & uint , & ' self T ) -> bool ) -> bool {
243
237
for uint:: range( 0 , self . children. len( ) ) |idx| {
244
238
match self . children [ idx] {
245
239
Internal ( ref x) => if !x. each ( f) { return false } ,
246
- External ( k, ref v) => if !f ( & ( k, v) ) { return false } ,
240
+ External ( k, ref v) => if !f ( & k, v) { return false } ,
247
241
Nothing => ( )
248
242
}
249
243
}
250
244
true
251
245
}
252
246
253
- fn each_reverse ( & self , f : & fn ( & ( uint , & ' self T ) ) -> bool ) -> bool {
247
+ fn each_reverse ( & self , f : & fn ( & uint , & ' self T ) -> bool ) -> bool {
254
248
for uint:: range_rev( self . children. len( ) , 0 ) |idx| {
255
249
match self . children [ idx - 1 ] {
256
250
Internal ( ref x) => if !x. each_reverse ( f) { return false } ,
257
- External ( k, ref v) => if !f ( & ( k, v) ) { return false } ,
251
+ External ( k, ref v) => if !f ( & k, v) { return false } ,
258
252
Nothing => ( )
259
253
}
260
254
}
@@ -438,8 +432,8 @@ mod tests {
438
432
assert ! ( m. insert( 1 , 2 ) ) ;
439
433
440
434
let mut n = 0 ;
441
- for m. each |& ( k, v) | {
442
- assert ! ( k == n) ;
435
+ for m. each |k, v| {
436
+ assert ! ( * k == n) ;
443
437
assert ! ( * v == n * 2 ) ;
444
438
n += 1 ;
445
439
}
@@ -454,11 +448,11 @@ mod tests {
454
448
}
455
449
456
450
let mut n = uint:: max_value - 9999 ;
457
- for m. each |& ( k, v) | {
451
+ for m. each |k, v| {
458
452
if n == uint:: max_value - 5000 { break }
459
453
assert ! ( n < uint:: max_value - 5000 ) ;
460
454
461
- assert ! ( k == n) ;
455
+ assert ! ( * k == n) ;
462
456
assert ! ( * v == n / 2 ) ;
463
457
n += 1 ;
464
458
}
@@ -475,8 +469,8 @@ mod tests {
475
469
assert ! ( m. insert( 1 , 2 ) ) ;
476
470
477
471
let mut n = 4 ;
478
- for m. each_reverse |& ( k, v) | {
479
- assert ! ( k == n) ;
472
+ for m. each_reverse |k, v| {
473
+ assert ! ( * k == n) ;
480
474
assert ! ( * v == n * 2 ) ;
481
475
n -= 1 ;
482
476
}
@@ -491,11 +485,11 @@ mod tests {
491
485
}
492
486
493
487
let mut n = uint:: max_value;
494
- for m. each_reverse |& ( k, v) | {
488
+ for m. each_reverse |k, v| {
495
489
if n == uint:: max_value - 5000 { break }
496
490
assert ! ( n > uint:: max_value - 5000 ) ;
497
491
498
- assert ! ( k == n) ;
492
+ assert ! ( * k == n) ;
499
493
assert ! ( * v == n / 2 ) ;
500
494
n -= 1 ;
501
495
}
0 commit comments