Rollup merge of #42397 - sfackler:syncsender-sync, r=alexcrichton

Implement Sync for SyncSender

r? @alexcrichton
This commit is contained in:
Corey Farwell 2017-06-21 10:40:14 -04:00 committed by GitHub
commit 292fcc880f
2 changed files with 1 additions and 8 deletions

View file

@ -499,8 +499,6 @@ unsafe impl<T: Send> Send for Sender<T> { }
impl<T> !Sync for Sender<T> { }
/// The sending-half of Rust's synchronous [`sync_channel`] type.
/// This half can only be owned by one thread, but it can be cloned
/// to send to other threads.
///
/// Messages can be sent through this channel with [`send`] or [`try_send`].
///
@ -555,9 +553,6 @@ pub struct SyncSender<T> {
#[stable(feature = "rust1", since = "1.0.0")]
unsafe impl<T: Send> Send for SyncSender<T> {}
#[stable(feature = "rust1", since = "1.0.0")]
impl<T> !Sync for SyncSender<T> {}
/// An error returned from the [`Sender::send`] or [`SyncSender::send`]
/// function on **channel**s.
///

View file

@ -10,7 +10,7 @@
use std::cell::{Cell, RefCell};
use std::rc::{Rc, Weak};
use std::sync::mpsc::{Receiver, Sender, SyncSender};
use std::sync::mpsc::{Receiver, Sender};
fn test<T: Sync>() {}
@ -29,6 +29,4 @@ fn main() {
//~^ ERROR `std::sync::mpsc::Receiver<i32>: std::marker::Sync` is not satisfied
test::<Sender<i32>>();
//~^ ERROR `std::sync::mpsc::Sender<i32>: std::marker::Sync` is not satisfied
test::<SyncSender<i32>>();
//~^ ERROR `std::sync::mpsc::SyncSender<i32>: std::marker::Sync` is not satisfied
}