File tree 2 files changed +25
-5
lines changed
2 files changed +25
-5
lines changed Original file line number Diff line number Diff line change 10
10
11
11
use cell:: UnsafeCell ;
12
12
use fmt;
13
- use marker;
14
13
use mem;
15
14
use ops:: { Deref , DerefMut } ;
16
15
use ptr;
@@ -153,7 +152,9 @@ pub struct MutexGuard<'a, T: ?Sized + 'a> {
153
152
}
154
153
155
154
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
156
- impl < ' a , T : ?Sized > !marker:: Send for MutexGuard < ' a , T > { }
155
+ impl < ' a , T : ?Sized > !Send for MutexGuard < ' a , T > { }
156
+ #[ stable( feature = "rust1" , since = "1.18.0" ) ]
157
+ unsafe impl < ' a , T : ?Sized + Sync > Sync for MutexGuard < ' a , T > { }
157
158
158
159
impl < T > Mutex < T > {
159
160
/// Creates a new mutex in an unlocked state ready for use.
@@ -459,9 +460,6 @@ mod tests {
459
460
#[ derive( Eq , PartialEq , Debug ) ]
460
461
struct NonCopy ( i32 ) ;
461
462
462
- unsafe impl < T : Send > Send for Packet < T > { }
463
- unsafe impl < T > Sync for Packet < T > { }
464
-
465
463
#[ test]
466
464
fn smoke ( ) {
467
465
let m = Mutex :: new ( ( ) ) ;
Original file line number Diff line number Diff line change
1
+ // Copyright 2017 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ // MutexGuard<Cell<i32>> must not be Sync, that would be unsound.
12
+ use std:: sync:: Mutex ;
13
+ use std:: cell:: Cell ;
14
+
15
+ fn test_sync < T : Sync > ( _t : T ) { }
16
+
17
+ fn main ( )
18
+ {
19
+ let m = Mutex :: new ( Cell :: new ( 0i32 ) ) ;
20
+ let guard = m. lock ( ) . unwrap ( ) ;
21
+ test_sync ( guard) ; //~ ERROR the trait bound
22
+ }
You can’t perform that action at this time.
0 commit comments