diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2013-12-21 21:54:05 -0800 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2013-12-21 21:54:05 -0800 |
| commit | 67c02222526d46875ddabfda1b7a936564f916ff (patch) | |
| tree | 2b14716004d310e22fb1989c94fa6dd904692931 /src/libstd | |
| parent | ba801d8116616745ef3ca5c73682b440c1bda628 (diff) | |
Guarantee comm primitives are not Freeze
None of these primitives should be Freeze because sharing them in an Arc is a very bad idea. Closes #11039
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/comm/mod.rs | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/libstd/comm/mod.rs b/src/libstd/comm/mod.rs index 4cbc6c7cbb7..30324d9bc60 100644 --- a/src/libstd/comm/mod.rs +++ b/src/libstd/comm/mod.rs @@ -292,6 +292,7 @@ impl<T: Send> Consumer<T>{ /// The receiving-half of Rust's channel type. This half can only be owned by /// one task +#[no_freeze] // can't share ports in an arc pub struct Port<T> { priv queue: Consumer<T>, } @@ -305,12 +306,15 @@ pub struct PortIterator<'a, T> { /// The sending-half of Rust's channel type. This half can only be owned by one /// task +#[no_freeze] // can't share chans in an arc pub struct Chan<T> { priv queue: spsc::Producer<T, Packet>, } /// The sending-half of Rust's channel type. This half can be shared among many /// tasks by creating copies of itself through the `clone` method. +#[no_freeze] // technically this implementation is shareable, but it shouldn't + // be required to be shareable in an arc pub struct SharedChan<T> { priv queue: mpsc::Producer<T, Packet>, } |
