@@ -51,15 +51,20 @@ where
51
51
/// Iterator element type is `I::Item`.
52
52
///
53
53
/// See [`.merge_by()`](crate::Itertools::merge_by) for more information.
54
- pub type MergeBy < I , J , F > = InternalMergeJoinBy < I , J , F > ;
54
+ #[ must_use = "iterator adaptors are lazy and do nothing unless consumed" ]
55
+ pub struct MergeBy < I : Iterator , J : Iterator , F > {
56
+ left : PutBack < Fuse < I > > ,
57
+ right : PutBack < Fuse < J > > ,
58
+ cmp_fn : F ,
59
+ }
55
60
56
61
/// Create a `MergeBy` iterator.
57
62
pub fn merge_by_new < I , J , F > ( a : I , b : J , cmp : F ) -> MergeBy < I :: IntoIter , J :: IntoIter , F >
58
63
where
59
64
I : IntoIterator ,
60
65
J : IntoIterator < Item = I :: Item > ,
61
66
{
62
- InternalMergeJoinBy {
67
+ MergeBy {
63
68
left : put_back ( a. into_iter ( ) . fuse ( ) ) ,
64
69
right : put_back ( b. into_iter ( ) . fuse ( ) ) ,
65
70
cmp_fn : cmp,
79
84
J : IntoIterator ,
80
85
F : FnMut ( & I :: Item , & J :: Item ) -> T ,
81
86
{
82
- InternalMergeJoinBy {
87
+ MergeBy {
83
88
left : put_back ( left. into_iter ( ) . fuse ( ) ) ,
84
89
right : put_back ( right. into_iter ( ) . fuse ( ) ) ,
85
90
cmp_fn : MergeFuncLR ( cmp_fn, PhantomData ) ,
89
94
/// An iterator adaptor that merge-joins items from the two base iterators in ascending order.
90
95
///
91
96
/// See [`.merge_join_by()`](crate::Itertools::merge_join_by) for more information.
92
- pub type MergeJoinBy < I , J , F > = InternalMergeJoinBy <
93
- I ,
94
- J ,
95
- MergeFuncLR < F , <F as FuncLR < <I as Iterator >:: Item , <J as Iterator >:: Item > >:: T > ,
96
- > ;
97
-
98
- #[ must_use = "iterator adaptors are lazy and do nothing unless consumed" ]
99
- pub struct InternalMergeJoinBy < I : Iterator , J : Iterator , F > {
100
- left : PutBack < Fuse < I > > ,
101
- right : PutBack < Fuse < J > > ,
102
- cmp_fn : F ,
103
- }
97
+ pub type MergeJoinBy < I , J , F > =
98
+ MergeBy < I , J , MergeFuncLR < F , <F as FuncLR < <I as Iterator >:: Item , <J as Iterator >:: Item > >:: T > > ;
104
99
105
100
#[ derive( Clone , Debug ) ]
106
101
pub struct MergeFuncLR < F , T > ( F , PhantomData < T > ) ;
@@ -219,7 +214,7 @@ impl<T: PartialOrd> OrderingOrBool<T, T> for MergeLte {
219
214
}
220
215
}
221
216
222
- impl < I , J , F > Clone for InternalMergeJoinBy < I , J , F >
217
+ impl < I , J , F > Clone for MergeBy < I , J , F >
223
218
where
224
219
I : Iterator ,
225
220
J : Iterator ,
@@ -230,17 +225,17 @@ where
230
225
clone_fields ! ( left, right, cmp_fn) ;
231
226
}
232
227
233
- impl < I , J , F > fmt:: Debug for InternalMergeJoinBy < I , J , F >
228
+ impl < I , J , F > fmt:: Debug for MergeBy < I , J , F >
234
229
where
235
230
I : Iterator + fmt:: Debug ,
236
231
I :: Item : fmt:: Debug ,
237
232
J : Iterator + fmt:: Debug ,
238
233
J :: Item : fmt:: Debug ,
239
234
{
240
- debug_fmt_fields ! ( InternalMergeJoinBy , left, right) ;
235
+ debug_fmt_fields ! ( MergeBy , left, right) ;
241
236
}
242
237
243
- impl < I , J , F , T > Iterator for InternalMergeJoinBy < I , J , F >
238
+ impl < I , J , F , T > Iterator for MergeBy < I , J , F >
244
239
where
245
240
I : Iterator ,
246
241
J : Iterator ,
@@ -340,7 +335,7 @@ where
340
335
}
341
336
}
342
337
343
- impl < I , J , F , T > FusedIterator for InternalMergeJoinBy < I , J , F >
338
+ impl < I , J , F , T > FusedIterator for MergeBy < I , J , F >
344
339
where
345
340
I : Iterator ,
346
341
J : Iterator ,
0 commit comments