1+ #![ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
2+
13use crate :: iter:: { InPlaceIterable , SourceIter } ;
24
35/// A wrapper type around a key function.
@@ -9,7 +11,6 @@ use crate::iter::{InPlaceIterable, SourceIter};
911/// See its documentation for more.
1012///
1113/// [`Iterator::dedup_by_key`]: Iterator::dedup_by_key
12- #[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
1314#[ derive( Debug , Clone , Copy ) ]
1415pub struct ByKey < F > {
1516 key : F ,
@@ -22,7 +23,6 @@ impl<F> ByKey<F> {
2223 }
2324}
2425
25- #[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
2626impl < F , T , K > FnOnce < ( & T , & T ) > for ByKey < F >
2727where
2828 F : FnMut ( & T ) -> K ,
3535 }
3636}
3737
38- #[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
3938impl < F , T , K > FnMut < ( & T , & T ) > for ByKey < F >
4039where
4140 F : FnMut ( & T ) -> K ,
5655/// See its documentation for more.
5756///
5857/// [`Iterator::dedup`]: Iterator::dedup
59- #[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
6058#[ derive( Debug , Clone , Copy ) ]
6159#[ non_exhaustive]
6260pub struct ByPartialEq ;
@@ -68,7 +66,6 @@ impl ByPartialEq {
6866 }
6967}
7068
71- #[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
7269impl < T : PartialEq > FnOnce < ( & T , & T ) > for ByPartialEq {
7370 type Output = bool ;
7471 #[ inline]
@@ -77,7 +74,6 @@ impl<T: PartialEq> FnOnce<(&T, &T)> for ByPartialEq {
7774 }
7875}
7976
80- #[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
8177impl < T : PartialEq > FnMut < ( & T , & T ) > for ByPartialEq {
8278 #[ inline]
8379 extern "rust-call" fn call_mut ( & mut self , args : ( & T , & T ) ) -> Self :: Output {
@@ -94,7 +90,6 @@ impl<T: PartialEq> FnMut<(&T, &T)> for ByPartialEq {
9490/// [`Iterator::dedup`]: Iterator::dedup
9591/// [`Iterator::dedup_by`]: Iterator::dedup_by
9692/// [`Iterator::dedup_by_key`]: Iterator::dedup_by_key
97- #[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
9893#[ derive( Debug , Clone ) ]
9994pub struct Dedup < I , F >
10095where
@@ -115,7 +110,6 @@ where
115110 }
116111}
117112
118- #[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
119113impl < I , F > Iterator for Dedup < I , F >
120114where
121115 I : Iterator ,
@@ -140,22 +134,21 @@ where
140134 }
141135}
142136
143- #[ unstable( feature = "iter_dedup " , reason = "recently added" , issue = "83748 ") ]
144- unsafe impl < S , I , F > SourceIter for Dedup < I , F >
137+ #[ unstable( issue = "none " , feature = "inplace_iteration " ) ]
138+ unsafe impl < I , F > SourceIter for Dedup < I , F >
145139where
146- S : Iterator ,
147- I : Iterator + SourceIter < Source = S > ,
140+ I : SourceIter + Iterator ,
148141{
149- type Source = S ;
142+ type Source = I :: Source ;
150143
151144 #[ inline]
152- unsafe fn as_inner ( & mut self ) -> & mut Self :: Source {
145+ unsafe fn as_inner ( & mut self ) -> & mut I :: Source {
153146 // SAFETY: unsafe function forwarding to unsafe function with the same requirements
154147 unsafe { SourceIter :: as_inner ( & mut self . inner ) }
155148 }
156149}
157150
158- #[ unstable( feature = "iter_dedup " , reason = "recently added" , issue = "83748 ") ]
151+ #[ unstable( issue = "none " , feature = "inplace_iteration " ) ]
159152unsafe impl < I , F > InPlaceIterable for Dedup < I , F >
160153where
161154 I : InPlaceIterable ,
0 commit comments