@@ -15,16 +15,16 @@ where
15
15
}
16
16
}
17
17
18
- fn check_specialized < ' a , V , IterItem , Iter , F > ( iterator : & Iter , mapper : F )
19
- where
20
- V : Eq + Debug ,
21
- Iter : Iterator < Item = IterItem > + Clone + ' a ,
22
- F : Fn ( Box < dyn Iterator < Item = IterItem > + ' a > ) -> V ,
23
- {
24
- assert_eq ! (
25
- mapper ( Box :: new ( Unspecialized ( iterator . clone ( ) ) ) ) ,
26
- mapper ( Box :: new ( iterator . clone ( ) ) )
27
- )
18
+ macro_rules! check_specialized {
19
+ ( $src : expr , |$it : pat| $closure : expr ) => {
20
+ let $it = $src . clone ( ) ;
21
+ let v1 = $closure ;
22
+
23
+ let $it = Unspecialized ( $src . clone ( ) ) ;
24
+ let v2 = $closure ;
25
+
26
+ assert_eq! ( v1 , v2 ) ;
27
+ }
28
28
}
29
29
30
30
fn test_specializations < IterItem , Iter > (
@@ -33,10 +33,10 @@ fn test_specializations<IterItem, Iter>(
33
33
IterItem : Eq + Debug + Clone ,
34
34
Iter : Iterator < Item = IterItem > + Clone ,
35
35
{
36
- check_specialized ( it, |i| i. count ( ) ) ;
37
- check_specialized ( it, |i| i. last ( ) ) ;
38
- check_specialized ( it, |i| i. collect :: < Vec < _ > > ( ) ) ;
39
- check_specialized ( it, |i| {
36
+ check_specialized ! ( it, |i| i. count( ) ) ;
37
+ check_specialized ! ( it, |i| i. last( ) ) ;
38
+ check_specialized ! ( it, |i| i. collect:: <Vec <_>>( ) ) ;
39
+ check_specialized ! ( it, |i| {
40
40
let mut parameters_from_fold = vec![ ] ;
41
41
let fold_result = i. fold( vec![ ] , |mut acc, v: IterItem | {
42
42
parameters_from_fold. push( ( acc. clone( ) , v. clone( ) ) ) ;
@@ -45,7 +45,7 @@ fn test_specializations<IterItem, Iter>(
45
45
} ) ;
46
46
( parameters_from_fold, fold_result)
47
47
} ) ;
48
- check_specialized ( it, |mut i| {
48
+ check_specialized ! ( it, |mut i| {
49
49
let mut parameters_from_all = vec![ ] ;
50
50
let first = i. next( ) ;
51
51
let all_result = i. all( |x| {
@@ -56,7 +56,7 @@ fn test_specializations<IterItem, Iter>(
56
56
} ) ;
57
57
let size = it. clone ( ) . count ( ) ;
58
58
for n in 0 ..size + 2 {
59
- check_specialized ( it, |mut i| i. nth ( n) ) ;
59
+ check_specialized ! ( it, |mut i| i. nth( n) ) ;
60
60
}
61
61
// size_hint is a bit harder to check
62
62
let mut it_sh = it. clone ( ) ;
0 commit comments