@@ -94,15 +94,18 @@ impl<T: PartialEq> FnMut<(&T, &T)> for ByPartialEq {
94
94
/// [`Iterator::dedup_by_key`]: Iterator::dedup_by_key
95
95
#[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
96
96
#[ derive( Debug , Clone , Copy ) ]
97
- pub struct Dedup < I , F , T > {
97
+ pub struct Dedup < I , F >
98
+ where
99
+ I : Iterator ,
100
+ {
98
101
inner : I ,
99
102
same_bucket : F ,
100
- last : Option < T > ,
103
+ last : Option < I :: Item > ,
101
104
}
102
105
103
- impl < I , F , T > Dedup < I , F , T >
106
+ impl < I , F > Dedup < I , F >
104
107
where
105
- I : Iterator < Item = T > ,
108
+ I : Iterator ,
106
109
{
107
110
pub ( crate ) fn new ( inner : I , same_bucket : F ) -> Self {
108
111
let mut inner = inner;
@@ -111,12 +114,12 @@ where
111
114
}
112
115
113
116
#[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
114
- impl < I , F , T > Iterator for Dedup < I , F , T >
117
+ impl < I , F > Iterator for Dedup < I , F >
115
118
where
116
- I : Iterator < Item = T > ,
117
- F : FnMut ( & T , & T ) -> bool ,
119
+ I : Iterator ,
120
+ F : FnMut ( & I :: Item , & I :: Item ) -> bool ,
118
121
{
119
- type Item = T ;
122
+ type Item = I :: Item ;
120
123
121
124
fn next ( & mut self ) -> Option < Self :: Item > {
122
125
let last_item = self . last . as_ref ( ) ?;
@@ -143,7 +146,7 @@ where
143
146
}
144
147
145
148
#[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
146
- unsafe impl < S , I , F , T > SourceIter for Dedup < I , F , T >
149
+ unsafe impl < S , I , F > SourceIter for Dedup < I , F >
147
150
where
148
151
S : Iterator ,
149
152
I : Iterator + SourceIter < Source = S > ,
@@ -157,9 +160,9 @@ where
157
160
}
158
161
159
162
#[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
160
- unsafe impl < I , F , T > InPlaceIterable for Dedup < I , F , T >
163
+ unsafe impl < I , F > InPlaceIterable for Dedup < I , F >
161
164
where
162
- I : InPlaceIterable < Item = T > ,
163
- F : FnMut ( & T , & T ) -> bool ,
165
+ I : InPlaceIterable ,
166
+ F : FnMut ( & I :: Item , & I :: Item ) -> bool ,
164
167
{
165
168
}
0 commit comments