sync: remove unsafe and add Send+Share to Deref (enabled by autoderef vtables)
This commit is contained in:
parent
9a33330caa
commit
dc49018679
2 changed files with 7 additions and 11 deletions
|
|
@ -124,12 +124,10 @@ impl<T: Share + Send> Clone for Arc<T> {
|
|||
}
|
||||
}
|
||||
|
||||
// FIXME(#13042): this should have T: Send, and use self.inner()
|
||||
impl<T> Deref<T> for Arc<T> {
|
||||
impl<T: Send + Share> Deref<T> for Arc<T> {
|
||||
#[inline]
|
||||
fn deref<'a>(&'a self) -> &'a T {
|
||||
let inner = unsafe { &*self.x };
|
||||
&inner.data
|
||||
&self.inner().data
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -231,11 +231,10 @@ impl<T: Send> Mutex<T> {
|
|||
}
|
||||
}
|
||||
|
||||
// FIXME(#13042): these should both have T: Send
|
||||
impl<'a, T> Deref<T> for MutexGuard<'a, T> {
|
||||
impl<'a, T: Send> Deref<T> for MutexGuard<'a, T> {
|
||||
fn deref<'a>(&'a self) -> &'a T { &*self.data }
|
||||
}
|
||||
impl<'a, T> DerefMut<T> for MutexGuard<'a, T> {
|
||||
impl<'a, T: Send> DerefMut<T> for MutexGuard<'a, T> {
|
||||
fn deref_mut<'a>(&'a mut self) -> &'a mut T { &mut *self.data }
|
||||
}
|
||||
|
||||
|
|
@ -363,14 +362,13 @@ impl<'a, T: Send + Share> RWLockWriteGuard<'a, T> {
|
|||
}
|
||||
}
|
||||
|
||||
// FIXME(#13042): these should all have T: Send + Share
|
||||
impl<'a, T> Deref<T> for RWLockReadGuard<'a, T> {
|
||||
impl<'a, T: Send + Share> Deref<T> for RWLockReadGuard<'a, T> {
|
||||
fn deref<'a>(&'a self) -> &'a T { self.data }
|
||||
}
|
||||
impl<'a, T> Deref<T> for RWLockWriteGuard<'a, T> {
|
||||
impl<'a, T: Send + Share> Deref<T> for RWLockWriteGuard<'a, T> {
|
||||
fn deref<'a>(&'a self) -> &'a T { &*self.data }
|
||||
}
|
||||
impl<'a, T> DerefMut<T> for RWLockWriteGuard<'a, T> {
|
||||
impl<'a, T: Send + Share> DerefMut<T> for RWLockWriteGuard<'a, T> {
|
||||
fn deref_mut<'a>(&'a mut self) -> &'a mut T { &mut *self.data }
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue