144
144
//! assert!(counter.into_map() == expected);
145
145
//! ```
146
146
147
- #[ cfg( test) ]
148
- #[ macro_use]
149
- extern crate maplit;
150
-
151
- extern crate num_traits;
152
147
use num_traits:: { One , Zero } ;
153
148
154
149
use std:: borrow:: Borrow ;
@@ -195,7 +190,7 @@ where
195
190
I : IntoIterator < Item = T > ,
196
191
{
197
192
for item in iterable. into_iter ( ) {
198
- let entry = self . map . entry ( item) . or_insert ( N :: zero ( ) ) ;
193
+ let entry = self . map . entry ( item) . or_insert_with ( N :: zero) ;
199
194
* entry += N :: one ( ) ;
200
195
}
201
196
}
@@ -284,7 +279,7 @@ where
284
279
items. sort_by ( |& ( ref a_item, ref a_count) , & ( ref b_item, ref b_count) | {
285
280
match b_count. cmp ( & a_count) {
286
281
Ordering :: Equal => tiebreaker ( & a_item, & b_item) ,
287
- unequal @ _ => unequal,
282
+ unequal => unequal,
288
283
}
289
284
} ) ;
290
285
items
@@ -334,7 +329,7 @@ where
334
329
/// ```
335
330
fn add_assign ( & mut self , rhs : Self ) {
336
331
for ( key, value) in rhs. map . iter ( ) {
337
- let entry = self . map . entry ( key. clone ( ) ) . or_insert ( N :: zero ( ) ) ;
332
+ let entry = self . map . entry ( key. clone ( ) ) . or_insert_with ( N :: zero) ;
338
333
* entry += value. clone ( ) ;
339
334
}
340
335
}
@@ -362,10 +357,9 @@ where
362
357
/// let expect = [('a', 4), ('b', 3)].iter().cloned().collect::<HashMap<_, _>>();
363
358
/// assert_eq!(e.into_map(), expect);
364
359
/// ```
365
- fn add ( self , rhs : Counter < T , N > ) -> Self :: Output {
366
- let mut counter = self . clone ( ) ;
367
- counter += rhs;
368
- counter
360
+ fn add ( mut self , rhs : Counter < T , N > ) -> Self :: Output {
361
+ self += rhs;
362
+ self
369
363
}
370
364
}
371
365
@@ -503,15 +497,14 @@ where
503
497
/// let expect = [('a', 3), ('b', 2)].iter().cloned().collect::<HashMap<_, _>>();
504
498
/// assert_eq!(e.into_map(), expect);
505
499
/// ```
506
- fn bitor ( self , rhs : Counter < T , N > ) -> Self :: Output {
500
+ fn bitor ( mut self , rhs : Counter < T , N > ) -> Self :: Output {
507
501
use std:: cmp:: max;
508
502
509
- let mut counter = self . clone ( ) ;
510
503
for ( key, value) in rhs. map . iter ( ) {
511
- let entry = counter . map . entry ( key. clone ( ) ) . or_insert ( N :: zero ( ) ) ;
504
+ let entry = self . map . entry ( key. clone ( ) ) . or_insert_with ( N :: zero) ;
512
505
* entry = max ( & * entry, value) . clone ( ) ;
513
506
}
514
- counter
507
+ self
515
508
}
516
509
}
517
510
@@ -694,10 +687,9 @@ where
694
687
/// let expect = [('a', 2)].iter().cloned().collect::<HashMap<_, _>>();
695
688
/// assert_eq!(e.into_map(), expect);
696
689
/// ```
697
- fn sub ( self , rhs : I ) -> Self :: Output {
698
- let mut ctr = self . clone ( ) ;
699
- ctr. subtract ( rhs) ;
700
- ctr
690
+ fn sub ( mut self , rhs : I ) -> Self :: Output {
691
+ self . subtract ( rhs) ;
692
+ self
701
693
}
702
694
}
703
695
@@ -742,7 +734,7 @@ where
742
734
fn from_iter < I : IntoIterator < Item = ( T , N ) > > ( iter : I ) -> Self {
743
735
let mut cnt = Counter :: new ( ) ;
744
736
for ( item, item_count) in iter. into_iter ( ) {
745
- let entry = cnt. map . entry ( item) . or_insert ( N :: zero ( ) ) ;
737
+ let entry = cnt. map . entry ( item) . or_insert_with ( N :: zero) ;
746
738
* entry += item_count;
747
739
}
748
740
cnt
@@ -751,6 +743,7 @@ where
751
743
752
744
#[ cfg( test) ]
753
745
mod tests {
746
+ use maplit:: hashmap;
754
747
use super :: * ;
755
748
use std:: collections:: HashMap ;
756
749
@@ -994,7 +987,7 @@ mod tests {
994
987
995
988
impl Inty {
996
989
pub fn new ( i : usize ) -> Inty {
997
- Inty { i : i }
990
+ Inty { i }
998
991
}
999
992
}
1000
993
0 commit comments