@@ -148,6 +148,8 @@ fn main() {
148148
149149*/
150150
151+ #![ stable]
152+
151153use core:: mem:: transmute;
152154use core:: cell:: Cell ;
153155use core:: clone:: Clone ;
@@ -171,6 +173,7 @@ struct RcBox<T> {
171173
172174/// Immutable reference counted pointer type
173175#[ unsafe_no_drop_flag]
176+ #[ stable]
174177pub struct Rc < T > {
175178 // FIXME #12808: strange names to try to avoid interfering with
176179 // field accesses of the contained type via Deref
@@ -179,6 +182,7 @@ pub struct Rc<T> {
179182 _noshare : marker:: NoShare
180183}
181184
185+ #[ stable]
182186impl < T > Rc < T > {
183187 /// Construct a new reference-counted box
184188 pub fn new ( value : T ) -> Rc < T > {
@@ -203,6 +207,7 @@ impl<T> Rc<T> {
203207
204208impl < T > Rc < T > {
205209 /// Downgrade the reference-counted pointer to a weak reference
210+ #[ experimental = "Weak pointers may not belong in this module." ]
206211 pub fn downgrade ( & self ) -> Weak < T > {
207212 self . inc_weak ( ) ;
208213 Weak {
@@ -238,6 +243,7 @@ impl<T: Clone> Rc<T> {
238243 }
239244}
240245
246+ #[ experimental = "Deref is experimental." ]
241247impl < T > Deref < T > for Rc < T > {
242248 /// Borrow the value contained in the reference-counted box
243249 #[ inline( always) ]
@@ -247,6 +253,7 @@ impl<T> Deref<T> for Rc<T> {
247253}
248254
249255#[ unsafe_destructor]
256+ #[ experimental = "Drop is experimental." ]
250257impl < T > Drop for Rc < T > {
251258 fn drop ( & mut self ) {
252259 unsafe {
@@ -269,7 +276,7 @@ impl<T> Drop for Rc<T> {
269276 }
270277}
271278
272- #[ unstable]
279+ #[ unstable = "Clone is unstable." ]
273280impl < T > Clone for Rc < T > {
274281 #[ inline]
275282 fn clone ( & self ) -> Rc < T > {
@@ -278,22 +285,26 @@ impl<T> Clone for Rc<T> {
278285 }
279286}
280287
288+ #[ stable]
281289impl < T : Default > Default for Rc < T > {
282290 #[ inline]
283291 fn default ( ) -> Rc < T > {
284292 Rc :: new ( Default :: default ( ) )
285293 }
286294}
287295
296+ #[ unstable = "PartialEq is unstable." ]
288297impl < T : PartialEq > PartialEq for Rc < T > {
289298 #[ inline( always) ]
290299 fn eq ( & self , other : & Rc < T > ) -> bool { * * self == * * other }
291300 #[ inline( always) ]
292301 fn ne ( & self , other : & Rc < T > ) -> bool { * * self != * * other }
293302}
294303
304+ #[ unstable = "Eq is unstable." ]
295305impl < T : Eq > Eq for Rc < T > { }
296306
307+ #[ unstable = "PartialOrd is unstable." ]
297308impl < T : PartialOrd > PartialOrd for Rc < T > {
298309 #[ inline( always) ]
299310 fn partial_cmp ( & self , other : & Rc < T > ) -> Option < Ordering > {
@@ -313,11 +324,13 @@ impl<T: PartialOrd> PartialOrd for Rc<T> {
313324 fn ge ( & self , other : & Rc < T > ) -> bool { * * self >= * * other }
314325}
315326
327+ #[ unstable = "Ord is unstable." ]
316328impl < T : Ord > Ord for Rc < T > {
317329 #[ inline]
318330 fn cmp ( & self , other : & Rc < T > ) -> Ordering { ( * * self ) . cmp ( & * * other) }
319331}
320332
333+ #[ experimental = "Show is experimental." ]
321334impl < T : fmt:: Show > fmt:: Show for Rc < T > {
322335 fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
323336 ( * * self ) . fmt ( f)
@@ -326,6 +339,7 @@ impl<T: fmt::Show> fmt::Show for Rc<T> {
326339
327340/// Weak reference to a reference-counted box
328341#[ unsafe_no_drop_flag]
342+ #[ experimental = "Weak pointers may not belong in this module." ]
329343pub struct Weak < T > {
330344 // FIXME #12808: strange names to try to avoid interfering with
331345 // field accesses of the contained type via Deref
@@ -334,6 +348,7 @@ pub struct Weak<T> {
334348 _noshare : marker:: NoShare
335349}
336350
351+ #[ experimental = "Weak pointers may not belong in this module." ]
337352impl < T > Weak < T > {
338353 /// Upgrade a weak reference to a strong reference
339354 pub fn upgrade ( & self ) -> Option < Rc < T > > {
@@ -347,6 +362,7 @@ impl<T> Weak<T> {
347362}
348363
349364#[ unsafe_destructor]
365+ #[ experimental = "Weak pointers may not belong in this module." ]
350366impl < T > Drop for Weak < T > {
351367 fn drop ( & mut self ) {
352368 unsafe {
@@ -364,6 +380,7 @@ impl<T> Drop for Weak<T> {
364380}
365381
366382#[ unstable]
383+ #[ experimental = "Weak pointers may not belong in this module." ]
367384impl < T > Clone for Weak < T > {
368385 #[ inline]
369386 fn clone ( & self ) -> Weak < T > {
0 commit comments