9797//! // std::mem::swap(&mut *still_unmoved, &mut *new_unmoved);
9898//! ```
9999
100- #![ unstable ( feature = "pin" , issue = "49150 " ) ]
100+ #![ stable ( feature = "pin" , since = "1.33.0 " ) ]
101101
102102use fmt;
103103use marker:: { Sized , Unpin } ;
@@ -116,7 +116,7 @@ use ops::{Deref, DerefMut, CoerceUnsized, DispatchFromDyn};
116116//
117117// Note: the derives below are allowed because they all only use `&P`, so they
118118// cannot move the value behind `pointer`.
119- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
119+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
120120#[ fundamental]
121121#[ repr( transparent) ]
122122#[ derive( Copy , Clone , Hash , Eq , PartialEq , Ord , PartialOrd ) ]
@@ -130,7 +130,7 @@ where
130130{
131131 /// Construct a new `Pin` around a pointer to some data of a type that
132132 /// implements `Unpin`.
133- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
133+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
134134 #[ inline( always) ]
135135 pub fn new ( pointer : P ) -> Pin < P > {
136136 // Safety: the value pointed to is `Unpin`, and so has no requirements
@@ -152,14 +152,14 @@ impl<P: Deref> Pin<P> {
152152 ///
153153 /// If `pointer` dereferences to an `Unpin` type, `Pin::new` should be used
154154 /// instead.
155- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
155+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
156156 #[ inline( always) ]
157157 pub unsafe fn new_unchecked ( pointer : P ) -> Pin < P > {
158158 Pin { pointer }
159159 }
160160
161161 /// Get a pinned shared reference from this pinned pointer.
162- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
162+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
163163 #[ inline( always) ]
164164 pub fn as_ref ( self : & Pin < P > ) -> Pin < & P :: Target > {
165165 unsafe { Pin :: new_unchecked ( & * self . pointer ) }
@@ -168,14 +168,14 @@ impl<P: Deref> Pin<P> {
168168
169169impl < P : DerefMut > Pin < P > {
170170 /// Get a pinned mutable reference from this pinned pointer.
171- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
171+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
172172 #[ inline( always) ]
173173 pub fn as_mut ( self : & mut Pin < P > ) -> Pin < & mut P :: Target > {
174174 unsafe { Pin :: new_unchecked ( & mut * self . pointer ) }
175175 }
176176
177177 /// Assign a new value to the memory behind the pinned reference.
178- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
178+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
179179 #[ inline( always) ]
180180 pub fn set ( mut self : Pin < P > , value : P :: Target )
181181 where
@@ -197,7 +197,7 @@ impl<'a, T: ?Sized> Pin<&'a T> {
197197 /// will not move so long as the argument value does not move (for example,
198198 /// because it is one of the fields of that value), and also that you do
199199 /// not move out of the argument you receive to the interior function.
200- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
200+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
201201 pub unsafe fn map_unchecked < U , F > ( self : Pin < & ' a T > , func : F ) -> Pin < & ' a U > where
202202 F : FnOnce ( & T ) -> & U ,
203203 {
@@ -213,7 +213,7 @@ impl<'a, T: ?Sized> Pin<&'a T> {
213213 /// that lives for as long as the borrow of the `Pin`, not the lifetime of
214214 /// the `Pin` itself. This method allows turning the `Pin` into a reference
215215 /// with the same lifetime as the original `Pin`.
216- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
216+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
217217 #[ inline( always) ]
218218 pub fn get_ref ( self : Pin < & ' a T > ) -> & ' a T {
219219 self . pointer
@@ -222,7 +222,7 @@ impl<'a, T: ?Sized> Pin<&'a T> {
222222
223223impl < ' a , T : ?Sized > Pin < & ' a mut T > {
224224 /// Convert this `Pin<&mut T>` into a `Pin<&T>` with the same lifetime.
225- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
225+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
226226 #[ inline( always) ]
227227 pub fn into_ref ( self : Pin < & ' a mut T > ) -> Pin < & ' a T > {
228228 Pin { pointer : self . pointer }
@@ -237,7 +237,7 @@ impl<'a, T: ?Sized> Pin<&'a mut T> {
237237 /// that lives for as long as the borrow of the `Pin`, not the lifetime of
238238 /// the `Pin` itself. This method allows turning the `Pin` into a reference
239239 /// with the same lifetime as the original `Pin`.
240- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
240+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
241241 #[ inline( always) ]
242242 pub fn get_mut ( self : Pin < & ' a mut T > ) -> & ' a mut T
243243 where T : Unpin ,
@@ -255,7 +255,7 @@ impl<'a, T: ?Sized> Pin<&'a mut T> {
255255 ///
256256 /// If the underlying data is `Unpin`, `Pin::get_mut` should be used
257257 /// instead.
258- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
258+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
259259 #[ inline( always) ]
260260 pub unsafe fn get_unchecked_mut ( self : Pin < & ' a mut T > ) -> & ' a mut T {
261261 self . pointer
@@ -272,7 +272,7 @@ impl<'a, T: ?Sized> Pin<&'a mut T> {
272272 /// will not move so long as the argument value does not move (for example,
273273 /// because it is one of the fields of that value), and also that you do
274274 /// not move out of the argument you receive to the interior function.
275- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
275+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
276276 pub unsafe fn map_unchecked_mut < U , F > ( self : Pin < & ' a mut T > , func : F ) -> Pin < & ' a mut U > where
277277 F : FnOnce ( & mut T ) -> & mut U ,
278278 {
@@ -282,15 +282,15 @@ impl<'a, T: ?Sized> Pin<&'a mut T> {
282282 }
283283}
284284
285- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
285+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
286286impl < P : Deref > Deref for Pin < P > {
287287 type Target = P :: Target ;
288288 fn deref ( & self ) -> & P :: Target {
289289 Pin :: get_ref ( Pin :: as_ref ( self ) )
290290 }
291291}
292292
293- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
293+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
294294impl < P : DerefMut > DerefMut for Pin < P >
295295where
296296 P :: Target : Unpin
@@ -300,21 +300,21 @@ where
300300 }
301301}
302302
303- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
303+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
304304impl < P : fmt:: Debug > fmt:: Debug for Pin < P > {
305305 fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
306306 fmt:: Debug :: fmt ( & self . pointer , f)
307307 }
308308}
309309
310- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
310+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
311311impl < P : fmt:: Display > fmt:: Display for Pin < P > {
312312 fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
313313 fmt:: Display :: fmt ( & self . pointer , f)
314314 }
315315}
316316
317- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
317+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
318318impl < P : fmt:: Pointer > fmt:: Pointer for Pin < P > {
319319 fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
320320 fmt:: Pointer :: fmt ( & self . pointer , f)
@@ -326,13 +326,13 @@ impl<P: fmt::Pointer> fmt::Pointer for Pin<P> {
326326// `Deref<Target=Unpin>` is unsound. Any such impl would probably be unsound
327327// for other reasons, though, so we just need to take care not to allow such
328328// impls to land in std.
329- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
329+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
330330impl < P , U > CoerceUnsized < Pin < U > > for Pin < P >
331331where
332332 P : CoerceUnsized < U > ,
333333{ }
334334
335- #[ unstable ( feature = "pin" , issue = "49150 " ) ]
335+ #[ stable ( feature = "pin" , since = "1.33.0 " ) ]
336336impl < ' a , P , U > DispatchFromDyn < Pin < U > > for Pin < P >
337337where
338338 P : DispatchFromDyn < U > ,
0 commit comments