about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorDaniel Micay <danielmicay@gmail.com>2013-05-07 12:57:28 -0400
committerDaniel Micay <danielmicay@gmail.com>2013-05-07 13:02:56 -0400
commit43165b54e05d0640fda8cf419de09d9f6d032724 (patch)
tree1c7c3408ae8f770e44c89f07d80451f9fbd80949 /src/libstd
parent38a6a7a394fa55235ff0b3cab4d0903d7ba5a5a3 (diff)
downloadrust-43165b54e05d0640fda8cf419de09d9f6d032724.tar.gz
rust-43165b54e05d0640fda8cf419de09d9f6d032724.zip
rc: remove the managed pointer workaround
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/rc.rs13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/libstd/rc.rs b/src/libstd/rc.rs
index 3eb480f9ea8..6f72d8dc16d 100644
--- a/src/libstd/rc.rs
+++ b/src/libstd/rc.rs
@@ -24,9 +24,9 @@ struct RcBox<T> {
 }
 
 /// Immutable reference counted pointer type
+#[non_owned]
 pub struct Rc<T> {
     priv ptr: *mut RcBox<T>,
-    priv non_owned: Option<@()> // FIXME: #5601: replace with `#[non_owned]`
 }
 
 pub impl<'self, T: Owned> Rc<T> {
@@ -35,7 +35,7 @@ pub impl<'self, T: Owned> Rc<T> {
             let ptr = malloc(sys::size_of::<RcBox<T>>() as size_t) as *mut RcBox<T>;
             assert!(!ptr::is_null(ptr));
             intrinsics::move_val_init(&mut *ptr, RcBox{value: value, count: 1});
-            Rc{ptr: ptr, non_owned: None}
+            Rc{ptr: ptr}
         }
     }
 
@@ -64,7 +64,7 @@ impl<T: Owned> Clone for Rc<T> {
     fn clone(&self) -> Rc<T> {
         unsafe {
             (*self.ptr).count += 1;
-            Rc{ptr: self.ptr, non_owned: None}
+            Rc{ptr: self.ptr}
         }
     }
 }
@@ -113,9 +113,10 @@ struct RcMutBox<T> {
 }
 
 /// Mutable reference counted pointer type
+#[non_owned]
+#[mutable]
 pub struct RcMut<T> {
     priv ptr: *mut RcMutBox<T>,
-    priv non_owned: Option<@mut ()> // FIXME: #5601: replace with `#[non_owned]` and `#[non_const]`
 }
 
 pub impl<'self, T: Owned> RcMut<T> {
@@ -124,7 +125,7 @@ pub impl<'self, T: Owned> RcMut<T> {
             let ptr = malloc(sys::size_of::<RcMutBox<T>>() as size_t) as *mut RcMutBox<T>;
             assert!(!ptr::is_null(ptr));
             intrinsics::move_val_init(&mut *ptr, RcMutBox{value: value, count: 1, borrow: Nothing});
-            RcMut{ptr: ptr, non_owned: None}
+            RcMut{ptr: ptr}
         }
     }
 
@@ -171,7 +172,7 @@ impl<T: Owned> Clone for RcMut<T> {
     fn clone(&self) -> RcMut<T> {
         unsafe {
             (*self.ptr).count += 1;
-            RcMut{ptr: self.ptr, non_owned: None}
+            RcMut{ptr: self.ptr}
         }
     }
 }