about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2013-05-18 01:53:40 -0700
committerBrian Anderson <banderson@mozilla.com>2013-05-20 15:20:49 -0700
commitfa18a861fbd934c295990e59b20c7a0498b88f08 (patch)
treeb78555dfbd493a48d91c9c50dbc238829b5c2222
parentd2a1378ed8dd3693511836fdee656d8f79089a73 (diff)
downloadrust-fa18a861fbd934c295990e59b20c7a0498b88f08.tar.gz
rust-fa18a861fbd934c295990e59b20c7a0498b88f08.zip
core::rt: Queues MessageQueue and WorkQueue are cloneable
-rw-r--r--src/libcore/rt/message_queue.rs11
-rw-r--r--src/libcore/rt/work_queue.rs9
2 files changed, 19 insertions, 1 deletions
diff --git a/src/libcore/rt/message_queue.rs b/src/libcore/rt/message_queue.rs
index 014e71d3de6..eaab9288ac8 100644
--- a/src/libcore/rt/message_queue.rs
+++ b/src/libcore/rt/message_queue.rs
@@ -14,6 +14,7 @@ use vec::OwnedVector;
 use cell::Cell;
 use option::*;
 use unstable::sync::{Exclusive, exclusive};
+use clone::Clone;
 
 pub struct MessageQueue<T> {
     // XXX: Another mystery bug fixed by boxing this lock
@@ -41,4 +42,12 @@ impl<T: Owned> MessageQueue<T> {
             }
         }
     }
-}
\ No newline at end of file
+}
+
+impl<T> Clone for MessageQueue<T> {
+    fn clone(&self) -> MessageQueue<T> {
+        MessageQueue {
+            queue: self.queue.clone()
+        }
+    }
+}
diff --git a/src/libcore/rt/work_queue.rs b/src/libcore/rt/work_queue.rs
index 31f73cd09b5..e9eb663392b 100644
--- a/src/libcore/rt/work_queue.rs
+++ b/src/libcore/rt/work_queue.rs
@@ -14,6 +14,7 @@ use vec::OwnedVector;
 use unstable::sync::{Exclusive, exclusive};
 use cell::Cell;
 use kinds::Owned;
+use clone::Clone;
 
 pub struct WorkQueue<T> {
     // XXX: Another mystery bug fixed by boxing this lock
@@ -56,3 +57,11 @@ pub impl<T: Owned> WorkQueue<T> {
         self.queue.with_imm(|q| q.is_empty() )
     }
 }
+
+impl<T> Clone for WorkQueue<T> {
+    fn clone(&self) -> WorkQueue<T> {
+        WorkQueue {
+            queue: self.queue.clone()
+        }
+    }
+}