about summary refs log tree commit diff
path: root/src/libstd/rt
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstd/rt')
-rw-r--r--src/libstd/rt/join_latch.rs18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/libstd/rt/join_latch.rs b/src/libstd/rt/join_latch.rs
index 8073c4a75b8..924db1a21b7 100644
--- a/src/libstd/rt/join_latch.rs
+++ b/src/libstd/rt/join_latch.rs
@@ -583,29 +583,31 @@ mod test {
         }
     }
 
+    #[deriving(Clone)]
+    struct Order {
+        immediate: bool,
+        succeed: bool,
+        orders: ~[Order]
+    }
+
     #[test]
     fn whateverman() {
-        struct Order {
-            immediate: bool,
-            succeed: bool,
-            orders: ~[Order]
-        }
         fn next(latch: &mut JoinLatch, orders: ~[Order]) {
             for orders.iter().advance |order| {
-                let suborders = copy order.orders;
+                let suborders = order.orders.clone();
                 let child_latch = Cell::new(latch.new_child());
                 let succeed = order.succeed;
                 if order.immediate {
                     do spawntask_immediately {
                         let mut child_latch = child_latch.take();
-                        next(&mut *child_latch, copy suborders);
+                        next(&mut *child_latch, suborders.clone());
                         rtdebug!("immediate releasing");
                         child_latch.release(succeed);
                     }
                 } else {
                     do spawntask_later {
                         let mut child_latch = child_latch.take();
-                        next(&mut *child_latch, copy suborders);
+                        next(&mut *child_latch, suborders.clone());
                         rtdebug!("later releasing");
                         child_latch.release(succeed);
                     }