diff options
Diffstat (limited to 'src/libstd/rt')
| -rw-r--r-- | src/libstd/rt/join_latch.rs | 18 |
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); } |
