From 67c02222526d46875ddabfda1b7a936564f916ff Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Sat, 21 Dec 2013 21:54:05 -0800 Subject: 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 --- src/libstd/comm/mod.rs | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/libstd') 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 Consumer{ /// 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 { priv queue: Consumer, } @@ -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 { priv queue: spsc::Producer, } /// 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 { priv queue: mpsc::Producer, } -- cgit 1.4.1-3-g733a5