1
Fork 0

Elide lifetimes around Arc<T>.

It's a small step forward in application of RFC 39 to the code base
itself.

Signed-off-by: OGINO Masanori <masanori.ogino@gmail.com>
This commit is contained in:
OGINO Masanori 2014-07-30 05:53:40 +09:00 committed by Alex Crichton
parent 04fa906648
commit 02d12e5f71

View file

@ -92,7 +92,7 @@ impl<T: Share + Send> Arc<T> {
} }
#[inline] #[inline]
fn inner<'a>(&'a self) -> &'a ArcInner<T> { fn inner(&self) -> &ArcInner<T> {
// This unsafety is ok because while this arc is alive we're guaranteed // This unsafety is ok because while this arc is alive we're guaranteed
// that the inner pointer is valid. Furthermore, we know that the // that the inner pointer is valid. Furthermore, we know that the
// `ArcInner` structure itself is `Share` because the inner data is // `ArcInner` structure itself is `Share` because the inner data is
@ -142,7 +142,7 @@ impl<T: Share + Send> Clone for Arc<T> {
#[experimental = "Deref is experimental."] #[experimental = "Deref is experimental."]
impl<T: Send + Share> Deref<T> for Arc<T> { impl<T: Send + Share> Deref<T> for Arc<T> {
#[inline] #[inline]
fn deref<'a>(&'a self) -> &'a T { fn deref(&self) -> &T {
&self.inner().data &self.inner().data
} }
} }
@ -155,7 +155,7 @@ impl<T: Send + Share + Clone> Arc<T> {
/// data is cloned if the reference count is greater than one. /// data is cloned if the reference count is greater than one.
#[inline] #[inline]
#[experimental] #[experimental]
pub fn make_unique<'a>(&'a mut self) -> &'a mut T { pub fn make_unique(&mut self) -> &mut T {
// Note that we hold a strong reference, which also counts as // Note that we hold a strong reference, which also counts as
// a weak reference, so we only clone if there is an // a weak reference, so we only clone if there is an
// additional reference of either kind. // additional reference of either kind.
@ -238,7 +238,7 @@ impl<T: Share + Send> Weak<T> {
} }
#[inline] #[inline]
fn inner<'a>(&'a self) -> &'a ArcInner<T> { fn inner(&self) -> &ArcInner<T> {
// See comments above for why this is "safe" // See comments above for why this is "safe"
unsafe { &*self._ptr } unsafe { &*self._ptr }
} }