From 998a8777379d8f1cd7b263eff50411ba56f1f9e7 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sat, 29 Apr 2017 09:11:51 +0200 Subject: MutexGuard may be Sync only if T is Sync Also remove some unnecessary unsafe impl from the tests. --- src/libstd/sync/mutex.rs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'src/libstd/sync') diff --git a/src/libstd/sync/mutex.rs b/src/libstd/sync/mutex.rs index a27f621e6b2..bd5a0fd9828 100644 --- a/src/libstd/sync/mutex.rs +++ b/src/libstd/sync/mutex.rs @@ -10,7 +10,6 @@ use cell::UnsafeCell; use fmt; -use marker; use mem; use ops::{Deref, DerefMut}; use ptr; @@ -153,7 +152,9 @@ pub struct MutexGuard<'a, T: ?Sized + 'a> { } #[stable(feature = "rust1", since = "1.0.0")] -impl<'a, T: ?Sized> !marker::Send for MutexGuard<'a, T> {} +impl<'a, T: ?Sized> !Send for MutexGuard<'a, T> { } +#[stable(feature = "rust1", since = "1.18.0")] +unsafe impl<'a, T: ?Sized + Sync> Sync for MutexGuard<'a, T> { } impl Mutex { /// Creates a new mutex in an unlocked state ready for use. @@ -459,9 +460,6 @@ mod tests { #[derive(Eq, PartialEq, Debug)] struct NonCopy(i32); - unsafe impl Send for Packet {} - unsafe impl Sync for Packet {} - #[test] fn smoke() { let m = Mutex::new(()); -- cgit 1.4.1-3-g733a5