diff options
| author | Daniel Micay <danielmicay@gmail.com> | 2013-05-08 15:03:39 -0400 |
|---|---|---|
| committer | Daniel Micay <danielmicay@gmail.com> | 2013-05-08 16:00:49 -0400 |
| commit | 044abef0e56f02c36cf93fd9572813c2b27f98af (patch) | |
| tree | b804895f5d40c57f3ea707368773cbc0e230c5a6 /src/libstd | |
| parent | b21f37c81804293168424697518d306542cdd798 (diff) | |
| download | rust-044abef0e56f02c36cf93fd9572813c2b27f98af.tar.gz rust-044abef0e56f02c36cf93fd9572813c2b27f98af.zip | |
fix incorrect region code based on the old 'self
also removes unnecessary casts from the RcMut implementation
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/rc.rs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/libstd/rc.rs b/src/libstd/rc.rs index 6f72d8dc16d..815f03f4269 100644 --- a/src/libstd/rc.rs +++ b/src/libstd/rc.rs @@ -29,7 +29,7 @@ pub struct Rc<T> { priv ptr: *mut RcBox<T>, } -pub impl<'self, T: Owned> Rc<T> { +pub impl<T: Owned> Rc<T> { fn new(value: T) -> Rc<T> { unsafe { let ptr = malloc(sys::size_of::<RcBox<T>>() as size_t) as *mut RcBox<T>; @@ -40,8 +40,8 @@ pub impl<'self, T: Owned> Rc<T> { } #[inline(always)] - fn borrow(&self) -> &'self T { - unsafe { cast::transmute_region(&(*self.ptr).value) } + fn borrow<'r>(&'r self) -> &'r T { + unsafe { cast::copy_lifetime(self, &(*self.ptr).value) } } } @@ -119,7 +119,7 @@ pub struct RcMut<T> { priv ptr: *mut RcMutBox<T>, } -pub impl<'self, T: Owned> RcMut<T> { +pub impl<T: Owned> RcMut<T> { fn new(value: T) -> RcMut<T> { unsafe { let ptr = malloc(sys::size_of::<RcMutBox<T>>() as size_t) as *mut RcMutBox<T>; @@ -136,7 +136,7 @@ pub impl<'self, T: Owned> RcMut<T> { assert!((*self.ptr).borrow != Mutable); let previous = (*self.ptr).borrow; (*self.ptr).borrow = Immutable; - f(cast::transmute_region(&(*self.ptr).value)); + f(&(*self.ptr).value); (*self.ptr).borrow = previous; } } @@ -147,7 +147,7 @@ pub impl<'self, T: Owned> RcMut<T> { unsafe { assert!((*self.ptr).borrow == Nothing); (*self.ptr).borrow = Mutable; - f(cast::transmute_mut_region(&mut (*self.ptr).value)); + f(&mut (*self.ptr).value); (*self.ptr).borrow = Nothing; } } |
