@@ -47,14 +47,19 @@ pub fn merge<I, J>(i: I, j: J) -> Merge<<I as IntoIterator>::IntoIter, <J as Int
47
47
/// Iterator element type is `I::Item`.
48
48
///
49
49
/// See [`.merge_by()`](crate::Itertools::merge_by) for more information.
50
- pub type MergeBy < I , J , F > = InternalMergeJoinBy < I , J , F > ;
50
+ #[ must_use = "iterator adaptors are lazy and do nothing unless consumed" ]
51
+ pub struct MergeBy < I : Iterator , J : Iterator , F > {
52
+ left : PutBack < Fuse < I > > ,
53
+ right : PutBack < Fuse < J > > ,
54
+ cmp_fn : F ,
55
+ }
51
56
52
57
/// Create a `MergeBy` iterator.
53
58
pub fn merge_by_new < I , J , F > ( a : I , b : J , cmp : F ) -> MergeBy < I :: IntoIter , J :: IntoIter , F >
54
59
where I : IntoIterator ,
55
60
J : IntoIterator < Item = I :: Item > ,
56
61
{
57
- InternalMergeJoinBy {
62
+ MergeBy {
58
63
left : put_back ( a. into_iter ( ) . fuse ( ) ) ,
59
64
right : put_back ( b. into_iter ( ) . fuse ( ) ) ,
60
65
cmp_fn : cmp,
@@ -70,7 +75,7 @@ pub fn merge_join_by<I, J, F, T>(left: I, right: J, cmp_fn: F)
70
75
J : IntoIterator ,
71
76
F : FnMut ( & I :: Item , & J :: Item ) -> T ,
72
77
{
73
- InternalMergeJoinBy {
78
+ MergeBy {
74
79
left : put_back ( left. into_iter ( ) . fuse ( ) ) ,
75
80
right : put_back ( right. into_iter ( ) . fuse ( ) ) ,
76
81
cmp_fn : MergeFuncLR ( cmp_fn, PhantomData ) ,
@@ -80,14 +85,7 @@ pub fn merge_join_by<I, J, F, T>(left: I, right: J, cmp_fn: F)
80
85
/// An iterator adaptor that merge-joins items from the two base iterators in ascending order.
81
86
///
82
87
/// See [`.merge_join_by()`](crate::Itertools::merge_join_by) for more information.
83
- pub type MergeJoinBy < I , J , F > = InternalMergeJoinBy < I , J , MergeFuncLR < F , <F as FuncLR < <I as Iterator >:: Item , <J as Iterator >:: Item > >:: T > > ;
84
-
85
- #[ must_use = "iterator adaptors are lazy and do nothing unless consumed" ]
86
- pub struct InternalMergeJoinBy < I : Iterator , J : Iterator , F > {
87
- left : PutBack < Fuse < I > > ,
88
- right : PutBack < Fuse < J > > ,
89
- cmp_fn : F ,
90
- }
88
+ pub type MergeJoinBy < I , J , F > = MergeBy < I , J , MergeFuncLR < F , <F as FuncLR < <I as Iterator >:: Item , <J as Iterator >:: Item > >:: T > > ;
91
89
92
90
#[ derive( Clone , Debug ) ]
93
91
pub struct MergeFuncLR < F , T > ( F , PhantomData < T > ) ;
@@ -206,7 +204,7 @@ impl<T: PartialOrd> OrderingOrBool<T, T> for MergeLte {
206
204
}
207
205
}
208
206
209
- impl < I , J , F > Clone for InternalMergeJoinBy < I , J , F >
207
+ impl < I , J , F > Clone for MergeBy < I , J , F >
210
208
where I : Iterator ,
211
209
J : Iterator ,
212
210
PutBack < Fuse < I > > : Clone ,
@@ -216,16 +214,16 @@ impl<I, J, F> Clone for InternalMergeJoinBy<I, J, F>
216
214
clone_fields ! ( left, right, cmp_fn) ;
217
215
}
218
216
219
- impl < I , J , F > fmt:: Debug for InternalMergeJoinBy < I , J , F >
217
+ impl < I , J , F > fmt:: Debug for MergeBy < I , J , F >
220
218
where I : Iterator + fmt:: Debug ,
221
219
I :: Item : fmt:: Debug ,
222
220
J : Iterator + fmt:: Debug ,
223
221
J :: Item : fmt:: Debug ,
224
222
{
225
- debug_fmt_fields ! ( InternalMergeJoinBy , left, right) ;
223
+ debug_fmt_fields ! ( MergeBy , left, right) ;
226
224
}
227
225
228
- impl < I , J , F , T > Iterator for InternalMergeJoinBy < I , J , F >
226
+ impl < I , J , F , T > Iterator for MergeBy < I , J , F >
229
227
where I : Iterator ,
230
228
J : Iterator ,
231
229
F : OrderingOrBool < I :: Item , J :: Item , Out = T > ,
@@ -328,7 +326,7 @@ impl<I, J, F, T> Iterator for InternalMergeJoinBy<I, J, F>
328
326
}
329
327
}
330
328
331
- impl < I , J , F , T > FusedIterator for InternalMergeJoinBy < I , J , F >
329
+ impl < I , J , F , T > FusedIterator for MergeBy < I , J , F >
332
330
where
333
331
I : Iterator ,
334
332
J : Iterator ,
0 commit comments