1
+ #![ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
2
+
1
3
use crate :: iter:: { InPlaceIterable , SourceIter } ;
2
4
3
5
/// A wrapper type around a key function.
@@ -9,7 +11,6 @@ use crate::iter::{InPlaceIterable, SourceIter};
9
11
/// See its documentation for more.
10
12
///
11
13
/// [`Iterator::dedup_by_key`]: Iterator::dedup_by_key
12
- #[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
13
14
#[ derive( Debug , Clone , Copy ) ]
14
15
pub struct ByKey < F > {
15
16
key : F ,
@@ -22,7 +23,6 @@ impl<F> ByKey<F> {
22
23
}
23
24
}
24
25
25
- #[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
26
26
impl < F , T , K > FnOnce < ( & T , & T ) > for ByKey < F >
27
27
where
28
28
F : FnMut ( & T ) -> K ,
35
35
}
36
36
}
37
37
38
- #[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
39
38
impl < F , T , K > FnMut < ( & T , & T ) > for ByKey < F >
40
39
where
41
40
F : FnMut ( & T ) -> K ,
56
55
/// See its documentation for more.
57
56
///
58
57
/// [`Iterator::dedup`]: Iterator::dedup
59
- #[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
60
58
#[ derive( Debug , Clone , Copy ) ]
61
59
#[ non_exhaustive]
62
60
pub struct ByPartialEq ;
@@ -68,7 +66,6 @@ impl ByPartialEq {
68
66
}
69
67
}
70
68
71
- #[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
72
69
impl < T : PartialEq > FnOnce < ( & T , & T ) > for ByPartialEq {
73
70
type Output = bool ;
74
71
#[ inline]
@@ -77,7 +74,6 @@ impl<T: PartialEq> FnOnce<(&T, &T)> for ByPartialEq {
77
74
}
78
75
}
79
76
80
- #[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
81
77
impl < T : PartialEq > FnMut < ( & T , & T ) > for ByPartialEq {
82
78
#[ inline]
83
79
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 {
94
90
/// [`Iterator::dedup`]: Iterator::dedup
95
91
/// [`Iterator::dedup_by`]: Iterator::dedup_by
96
92
/// [`Iterator::dedup_by_key`]: Iterator::dedup_by_key
97
- #[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
98
93
#[ derive( Debug , Clone ) ]
99
94
pub struct Dedup < I , F >
100
95
where
@@ -115,7 +110,6 @@ where
115
110
}
116
111
}
117
112
118
- #[ unstable( feature = "iter_dedup" , reason = "recently added" , issue = "83748" ) ]
119
113
impl < I , F > Iterator for Dedup < I , F >
120
114
where
121
115
I : Iterator ,
@@ -140,22 +134,21 @@ where
140
134
}
141
135
}
142
136
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 >
145
139
where
146
- S : Iterator ,
147
- I : Iterator + SourceIter < Source = S > ,
140
+ I : SourceIter + Iterator ,
148
141
{
149
- type Source = S ;
142
+ type Source = I :: Source ;
150
143
151
144
#[ inline]
152
- unsafe fn as_inner ( & mut self ) -> & mut Self :: Source {
145
+ unsafe fn as_inner ( & mut self ) -> & mut I :: Source {
153
146
// SAFETY: unsafe function forwarding to unsafe function with the same requirements
154
147
unsafe { SourceIter :: as_inner ( & mut self . inner ) }
155
148
}
156
149
}
157
150
158
- #[ unstable( feature = "iter_dedup " , reason = "recently added" , issue = "83748 ") ]
151
+ #[ unstable( issue = "none " , feature = "inplace_iteration " ) ]
159
152
unsafe impl < I , F > InPlaceIterable for Dedup < I , F >
160
153
where
161
154
I : InPlaceIterable ,
0 commit comments