diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2014-11-26 08:12:18 -0500 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2014-12-14 04:21:56 -0500 |
| commit | 5c3d3989192f88b16f39d554c3844700c91b6c8e (patch) | |
| tree | 59c77544a06d3f4c2d363b5afe37c91a444e78d6 /src/libstd | |
| parent | 394f6846b80240480f8d7ce4b3d5d4c42ba85201 (diff) | |
| download | rust-5c3d3989192f88b16f39d554c3844700c91b6c8e.tar.gz rust-5c3d3989192f88b16f39d554c3844700c91b6c8e.zip | |
Mostly rote conversion of `proc()` to `move||` (and occasionally `Thunk::new`)
Diffstat (limited to 'src/libstd')
30 files changed, 284 insertions, 272 deletions
diff --git a/src/libstd/c_vec.rs b/src/libstd/c_vec.rs index f89876f7245..44e7291150e 100644 --- a/src/libstd/c_vec.rs +++ b/src/libstd/c_vec.rs @@ -37,19 +37,20 @@ use kinds::Send; use mem; -use ops::Drop; +use ops::{Drop, FnOnce}; use option::Option; use option::Option::{Some, None}; use ptr::RawPtr; use ptr; use raw; use slice::AsSlice; +use thunk::{Thunk}; /// The type representing a foreign chunk of memory pub struct CVec<T> { base: *mut T, len: uint, - dtor: Option<proc():Send>, + dtor: Option<Thunk>, } #[unsafe_destructor] @@ -57,7 +58,7 @@ impl<T> Drop for CVec<T> { fn drop(&mut self) { match self.dtor.take() { None => (), - Some(f) => f() + Some(f) => f.invoke(()) } } } @@ -90,15 +91,20 @@ impl<T> CVec<T> { /// /// * base - A foreign pointer to a buffer /// * len - The number of elements in the buffer - /// * dtor - A proc to run when the value is destructed, useful + /// * dtor - A fn to run when the value is destructed, useful /// for freeing the buffer, etc. - pub unsafe fn new_with_dtor(base: *mut T, len: uint, - dtor: proc():Send) -> CVec<T> { + pub unsafe fn new_with_dtor<F>(base: *mut T, + len: uint, + dtor: F) + -> CVec<T> + where F : FnOnce(), F : Send + { assert!(base != ptr::null_mut()); + let dtor: Thunk = Thunk::new(dtor); CVec { base: base, len: len, - dtor: Some(dtor), + dtor: Some(dtor) } } @@ -177,8 +183,9 @@ mod tests { let mem = libc::malloc(n as libc::size_t); if mem.is_null() { ::alloc::oom() } - CVec::new_with_dtor(mem as *mut u8, n, - proc() { libc::free(mem as *mut libc::c_void); }) + CVec::new_with_dtor(mem as *mut u8, + n, + move|| { libc::free(mem as *mut libc::c_void); }) } } @@ -218,8 +225,9 @@ mod tests { #[test] fn test_unwrap() { unsafe { - let cv = CVec::new_with_dtor(1 as *mut int, 0, - proc() { panic!("Don't run this destructor!") }); + let cv = CVec::new_with_dtor(1 as *mut int, + 0, + move|:| panic!("Don't run this destructor!")); let p = cv.unwrap(); assert_eq!(p, 1 as *mut int); } diff --git a/src/libstd/comm/mod.rs b/src/libstd/comm/mod.rs index 6cff5a3dd23..0a5b3e5771b 100644 --- a/src/libstd/comm/mod.rs +++ b/src/libstd/comm/mod.rs @@ -72,7 +72,7 @@ //! ``` //! // Create a simple streaming channel //! let (tx, rx) = channel(); -//! spawn(proc() { +//! spawn(move|| { //! tx.send(10i); //! }); //! assert_eq!(rx.recv(), 10i); @@ -87,7 +87,7 @@ //! let (tx, rx) = channel(); //! for i in range(0i, 10i) { //! let tx = tx.clone(); -//! spawn(proc() { +//! spawn(move|| { //! tx.send(i); //! }) //! } @@ -112,7 +112,7 @@ //! //! ``` //! let (tx, rx) = sync_channel::<int>(0); -//! spawn(proc() { +//! spawn(move|| { //! // This will wait for the parent task to start receiving //! tx.send(53); //! }); @@ -465,7 +465,7 @@ impl<T> UnsafeFlavor<T> for Receiver<T> { /// let (tx, rx) = channel(); /// /// // Spawn off an expensive computation -/// spawn(proc() { +/// spawn(move|| { /// # fn expensive_computation() {} /// tx.send(expensive_computation()); /// }); @@ -504,7 +504,7 @@ pub fn channel<T: Send>() -> (Sender<T>, Receiver<T>) { /// // this returns immediately /// tx.send(1i); /// -/// spawn(proc() { +/// spawn(move|| { /// // this will block until the previous message has been received /// tx.send(2i); /// }); @@ -1065,7 +1065,7 @@ mod test { test!(fn smoke_threads() { let (tx, rx) = channel::<int>(); - spawn(proc() { + spawn(move|| { tx.send(1); }); assert_eq!(rx.recv(), 1); @@ -1093,7 +1093,7 @@ mod test { test!(fn port_gone_concurrent() { let (tx, rx) = channel::<int>(); - spawn(proc() { + spawn(move|| { rx.recv(); }); loop { tx.send(1) } @@ -1102,7 +1102,7 @@ mod test { test!(fn port_gone_concurrent_shared() { let (tx, rx) = channel::<int>(); let tx2 = tx.clone(); - spawn(proc() { + spawn(move|| { rx.recv(); }); loop { @@ -1127,7 +1127,7 @@ mod test { test!(fn chan_gone_concurrent() { let (tx, rx) = channel::<int>(); - spawn(proc() { + spawn(move|| { tx.send(1); tx.send(1); }); @@ -1136,7 +1136,7 @@ mod test { test!(fn stress() { let (tx, rx) = channel::<int>(); - spawn(proc() { + spawn(move|| { for _ in range(0u, 10000) { tx.send(1i); } }); for _ in range(0u, 10000) { @@ -1150,7 +1150,7 @@ mod test { let (tx, rx) = channel::<int>(); let (dtx, drx) = channel::<()>(); - spawn(proc() { + spawn(move|| { for _ in range(0, AMT * NTHREADS) { assert_eq!(rx.recv(), 1); } @@ -1163,7 +1163,7 @@ mod test { for _ in range(0, NTHREADS) { let tx = tx.clone(); - spawn(proc() { + spawn(move|| { for _ in range(0, AMT) { tx.send(1); } }); } @@ -1177,7 +1177,7 @@ mod test { let (tx2, rx2) = channel::<int>(); let (tx3, rx3) = channel::<()>(); let tx4 = tx3.clone(); - spawn(proc() { + spawn(move|| { tx1.send(()); for _ in range(0i, 40) { assert_eq!(rx2.recv(), 1); @@ -1185,7 +1185,7 @@ mod test { tx3.send(()); }); rx1.recv(); - spawn(proc() { + spawn(move|| { for _ in range(0i, 40) { tx2.send(1); } @@ -1199,7 +1199,7 @@ mod test { fn recv_from_outside_runtime() { let (tx, rx) = channel::<int>(); let (dtx, drx) = channel(); - spawn(proc() { + spawn(move|| { for _ in range(0i, 40) { assert_eq!(rx.recv(), 1); } @@ -1217,12 +1217,12 @@ mod test { let (tx2, rx2) = channel::<int>(); let (tx3, rx3) = channel::<()>(); let tx4 = tx3.clone(); - spawn(proc() { + spawn(move|| { assert_eq!(rx1.recv(), 1); tx2.send(2); tx4.send(()); }); - spawn(proc() { + spawn(move|| { tx1.send(1); assert_eq!(rx2.recv(), 2); tx3.send(()); @@ -1252,7 +1252,7 @@ mod test { test!(fn oneshot_single_thread_recv_chan_close() { // Receiving on a closed chan will panic - let res = task::try(proc() { + let res = task::try(move|| { let (tx, rx) = channel::<int>(); drop(tx); rx.recv(); @@ -1312,7 +1312,7 @@ mod test { test!(fn oneshot_multi_task_recv_then_send() { let (tx, rx) = channel::<Box<int>>(); - spawn(proc() { + spawn(move|| { assert!(rx.recv() == box 10); }); @@ -1321,10 +1321,10 @@ mod test { test!(fn oneshot_multi_task_recv_then_close() { let (tx, rx) = channel::<Box<int>>(); - spawn(proc() { + spawn(move|| { drop(tx); }); - let res = task::try(proc() { + let res = task::try(move|| { assert!(rx.recv() == box 10); }); assert!(res.is_err()); @@ -1333,7 +1333,7 @@ mod test { test!(fn oneshot_multi_thread_close_stress() { for _ in range(0, stress_factor()) { let (tx, rx) = channel::<int>(); - spawn(proc() { + spawn(move|| { drop(rx); }); drop(tx); @@ -1343,10 +1343,10 @@ mod test { test!(fn oneshot_multi_thread_send_close_stress() { for _ in range(0, stress_factor()) { let (tx, rx) = channel::<int>(); - spawn(proc() { + spawn(move|| { drop(rx); }); - let _ = task::try(proc() { + let _ = task::try(move|| { tx.send(1); }); } @@ -1355,14 +1355,14 @@ mod test { test!(fn oneshot_multi_thread_recv_close_stress() { for _ in range(0, stress_factor()) { let (tx, rx) = channel::<int>(); - spawn(proc() { - let res = task::try(proc() { + spawn(move|| { + let res = task::try(move|| { rx.recv(); }); assert!(res.is_err()); }); - spawn(proc() { - spawn(proc() { + spawn(move|| { + spawn(move|| { drop(tx); }); }); @@ -1372,10 +1372,10 @@ mod test { test!(fn oneshot_multi_thread_send_recv_stress() { for _ in range(0, stress_factor()) { let (tx, rx) = channel(); - spawn(proc() { + spawn(move|| { tx.send(box 10i); }); - spawn(proc() { + spawn(move|| { assert!(rx.recv() == box 10i); }); } @@ -1391,7 +1391,7 @@ mod test { fn send(tx: Sender<Box<int>>, i: int) { if i == 10 { return } - spawn(proc() { + spawn(move|| { tx.send(box i); send(tx, i + 1); }); @@ -1400,7 +1400,7 @@ mod test { fn recv(rx: Receiver<Box<int>>, i: int) { if i == 10 { return } - spawn(proc() { + spawn(move|| { assert!(rx.recv() == box i); recv(rx, i + 1); }); @@ -1420,7 +1420,7 @@ mod test { let total = stress_factor() + 100; for _ in range(0, total) { let tx = tx.clone(); - spawn(proc() { + spawn(move|| { tx.send(()); }); } @@ -1434,7 +1434,7 @@ mod test { let (tx, rx) = channel::<int>(); let (total_tx, total_rx) = channel::<int>(); - spawn(proc() { + spawn(move|| { let mut acc = 0; for x in rx.iter() { acc += x; @@ -1453,7 +1453,7 @@ mod test { let (tx, rx) = channel::<int>(); let (count_tx, count_rx) = channel(); - spawn(proc() { + spawn(move|| { let mut count = 0; for x in rx.iter() { if count >= 3 { @@ -1477,7 +1477,7 @@ mod test { let (tx1, rx1) = channel::<int>(); let (tx2, rx2) = channel::<()>(); let (tx3, rx3) = channel::<()>(); - spawn(proc() { + spawn(move|| { rx2.recv(); tx1.send(1); tx3.send(()); @@ -1501,7 +1501,7 @@ mod test { test!(fn destroy_upgraded_shared_port_when_sender_still_active() { let (tx, rx) = channel(); let (tx2, rx2) = channel(); - spawn(proc() { + spawn(move|| { rx.recv(); // wait on a oneshot drop(rx); // destroy a shared tx2.send(()); @@ -1522,7 +1522,7 @@ mod test { use rustrt::thread::Thread; let (tx, rx) = channel(); - let t = Thread::start(proc() { + let t = Thread::start(move|| { for _ in range(0u, 1000) { tx.send(()); } @@ -1538,7 +1538,7 @@ mod test { let (tx, rx) = channel(); let (cdone, pdone) = channel(); - let t = Thread::start(proc() { + let t = Thread::start(move|| { let mut hits = 0u; while hits < 10 { match rx.try_recv() { @@ -1591,7 +1591,7 @@ mod sync_tests { test!(fn smoke_threads() { let (tx, rx) = sync_channel::<int>(0); - spawn(proc() { + spawn(move|| { tx.send(1); }); assert_eq!(rx.recv(), 1); @@ -1613,7 +1613,7 @@ mod sync_tests { test!(fn port_gone_concurrent() { let (tx, rx) = sync_channel::<int>(0); - spawn(proc() { + spawn(move|| { rx.recv(); }); loop { tx.send(1) } @@ -1622,7 +1622,7 @@ mod sync_tests { test!(fn port_gone_concurrent_shared() { let (tx, rx) = sync_channel::<int>(0); let tx2 = tx.clone(); - spawn(proc() { + spawn(move|| { rx.recv(); }); loop { @@ -1647,7 +1647,7 @@ mod sync_tests { test!(fn chan_gone_concurrent() { let (tx, rx) = sync_channel::<int>(0); - spawn(proc() { + spawn(move|| { tx.send(1); tx.send(1); }); @@ -1656,7 +1656,7 @@ mod sync_tests { test!(fn stress() { let (tx, rx) = sync_channel::<int>(0); - spawn(proc() { + spawn(move|| { for _ in range(0u, 10000) { tx.send(1); } }); for _ in range(0u, 10000) { @@ -1670,7 +1670,7 @@ mod sync_tests { let (tx, rx) = sync_channel::<int>(0); let (dtx, drx) = sync_channel::<()>(0); - spawn(proc() { + spawn(move|| { for _ in range(0, AMT * NTHREADS) { assert_eq!(rx.recv(), 1); } @@ -1683,7 +1683,7 @@ mod sync_tests { for _ in range(0, NTHREADS) { let tx = tx.clone(); - spawn(proc() { + spawn(move|| { for _ in range(0, AMT) { tx.send(1); } }); } @@ -1712,7 +1712,7 @@ mod sync_tests { test!(fn oneshot_single_thread_recv_chan_close() { // Receiving on a closed chan will panic - let res = task::try(proc() { + let res = task::try(move|| { let (tx, rx) = sync_channel::<int>(0); drop(tx); rx.recv(); @@ -1777,7 +1777,7 @@ mod sync_tests { test!(fn oneshot_multi_task_recv_then_send() { let (tx, rx) = sync_channel::<Box<int>>(0); - spawn(proc() { + spawn(move|| { assert!(rx.recv() == box 10); }); @@ -1786,10 +1786,10 @@ mod sync_tests { test!(fn oneshot_multi_task_recv_then_close() { let (tx, rx) = sync_channel::<Box<int>>(0); - spawn(proc() { + spawn(move|| { drop(tx); }); - let res = task::try(proc() { + let res = task::try(move|| { assert!(rx.recv() == box 10); }); assert!(res.is_err()); @@ -1798,7 +1798,7 @@ mod sync_tests { test!(fn oneshot_multi_thread_close_stress() { for _ in range(0, stress_factor()) { let (tx, rx) = sync_channel::<int>(0); - spawn(proc() { + spawn(move|| { drop(rx); }); drop(tx); @@ -1808,10 +1808,10 @@ mod sync_tests { test!(fn oneshot_multi_thread_send_close_stress() { for _ in range(0, stress_factor()) { let (tx, rx) = sync_channel::<int>(0); - spawn(proc() { + spawn(move|| { drop(rx); }); - let _ = task::try(proc() { + let _ = task::try(move|| { tx.send(1); }); } @@ -1820,14 +1820,14 @@ mod sync_tests { test!(fn oneshot_multi_thread_recv_close_stress() { for _ in range(0, stress_factor()) { let (tx, rx) = sync_channel::<int>(0); - spawn(proc() { - let res = task::try(proc() { + spawn(move|| { + let res = task::try(move|| { rx.recv(); }); assert!(res.is_err()); }); - spawn(proc() { - spawn(proc() { + spawn(move|| { + spawn(move|| { drop(tx); }); }); @@ -1837,10 +1837,10 @@ mod sync_tests { test!(fn oneshot_multi_thread_send_recv_stress() { for _ in range(0, stress_factor()) { let (tx, rx) = sync_channel::<Box<int>>(0); - spawn(proc() { + spawn(move|| { tx.send(box 10i); }); - spawn(proc() { + spawn(move|| { assert!(rx.recv() == box 10i); }); } @@ -1856,7 +1856,7 @@ mod sync_tests { fn send(tx: SyncSender<Box<int>>, i: int) { if i == 10 { return } - spawn(proc() { + spawn(move|| { tx.send(box i); send(tx, i + 1); }); @@ -1865,7 +1865,7 @@ mod sync_tests { fn recv(rx: Receiver<Box<int>>, i: int) { if i == 10 { return } - spawn(proc() { + spawn(move|| { assert!(rx.recv() == box i); recv(rx, i + 1); }); @@ -1885,7 +1885,7 @@ mod sync_tests { let total = stress_factor() + 100; for _ in range(0, total) { let tx = tx.clone(); - spawn(proc() { + spawn(move|| { tx.send(()); }); } @@ -1899,7 +1899,7 @@ mod sync_tests { let (tx, rx) = sync_channel::<int>(0); let (total_tx, total_rx) = sync_channel::<int>(0); - spawn(proc() { + spawn(move|| { let mut acc = 0; for x in rx.iter() { acc += x; @@ -1918,7 +1918,7 @@ mod sync_tests { let (tx, rx) = sync_channel::<int>(0); let (count_tx, count_rx) = sync_channel(0); - spawn(proc() { + spawn(move|| { let mut count = 0; for x in rx.iter() { if count >= 3 { @@ -1942,7 +1942,7 @@ mod sync_tests { let (tx1, rx1) = sync_channel::<int>(1); let (tx2, rx2) = sync_channel::<()>(1); let (tx3, rx3) = sync_channel::<()>(1); - spawn(proc() { + spawn(move|| { rx2.recv(); tx1.send(1); tx3.send(()); @@ -1966,7 +1966,7 @@ mod sync_tests { test!(fn destroy_upgraded_shared_port_when_sender_still_active() { let (tx, rx) = sync_channel::<()>(0); let (tx2, rx2) = sync_channel::<()>(0); - spawn(proc() { + spawn(move|| { rx.recv(); // wait on a oneshot drop(rx); // destroy a shared tx2.send(()); @@ -1988,7 +1988,7 @@ mod sync_tests { let (tx, rx) = sync_channel::<()>(0); let (cdone, pdone) = channel(); - let t = Thread::start(proc() { + let t = Thread::start(move|| { let mut hits = 0u; while hits < 10 { match rx.try_recv() { @@ -2008,20 +2008,20 @@ mod sync_tests { test!(fn send_opt1() { let (tx, rx) = sync_channel::<int>(0); - spawn(proc() { rx.recv(); }); + spawn(move|| { rx.recv(); }); assert_eq!(tx.send_opt(1), Ok(())); }) test!(fn send_opt2() { let (tx, rx) = sync_channel::<int>(0); - spawn(proc() { drop(rx); }); + spawn(move|| { drop(rx); }); assert_eq!(tx.send_opt(1), Err(1)); }) test!(fn send_opt3() { let (tx, rx) = sync_channel::<int>(1); assert_eq!(tx.send_opt(1), Ok(())); - spawn(proc() { drop(rx); }); + spawn(move|| { drop(rx); }); assert_eq!(tx.send_opt(1), Err(1)); }) @@ -2030,11 +2030,11 @@ mod sync_tests { let tx2 = tx.clone(); let (done, donerx) = channel(); let done2 = done.clone(); - spawn(proc() { + spawn(move|| { assert_eq!(tx.send_opt(1), Err(1)); done.send(()); }); - spawn(proc() { + spawn(move|| { assert_eq!(tx2.send_opt(2), Err(2)); done2.send(()); }); @@ -2063,7 +2063,7 @@ mod sync_tests { test!(fn try_send4() { let (tx, rx) = sync_channel::<int>(0); - spawn(proc() { + spawn(move|| { for _ in range(0u, 1000) { task::deschedule(); } assert_eq!(tx.try_send(1), Ok(())); }); @@ -2075,7 +2075,7 @@ mod sync_tests { let (tx1, rx1) = sync_channel::<()>(3); let (tx2, rx2) = sync_channel::<()>(3); - spawn(proc() { + spawn(move|| { rx1.recv(); tx2.try_send(()).unwrap(); }); diff --git a/src/libstd/comm/mpsc_queue.rs b/src/libstd/comm/mpsc_queue.rs index d4249abc3dd..db4e3eac449 100644 --- a/src/libstd/comm/mpsc_queue.rs +++ b/src/libstd/comm/mpsc_queue.rs @@ -178,7 +178,7 @@ mod tests { for _ in range(0, nthreads) { let tx = tx.clone(); let q = q.clone(); - spawn(proc() { + spawn(move|| { for i in range(0, nmsgs) { q.push(i); } diff --git a/src/libstd/comm/select.rs b/src/libstd/comm/select.rs index 3191519815a..e145b0df7f3 100644 --- a/src/libstd/comm/select.rs +++ b/src/libstd/comm/select.rs @@ -403,7 +403,7 @@ mod test { let (_tx2, rx2) = channel::<int>(); let (tx3, rx3) = channel::<int>(); - spawn(proc() { + spawn(move|| { for _ in range(0u, 20) { task::deschedule(); } tx1.send(1); rx3.recv(); @@ -426,7 +426,7 @@ mod test { let (tx2, rx2) = channel::<int>(); let (tx3, rx3) = channel::<()>(); - spawn(proc() { + spawn(move|| { for _ in range(0u, 20) { task::deschedule(); } tx1.send(1); tx2.send(2); @@ -452,7 +452,7 @@ mod test { let (tx2, rx2) = channel::<int>(); let (tx3, rx3) = channel::<()>(); - spawn(proc() { + spawn(move|| { for i in range(0, AMT) { if i % 2 == 0 { tx1.send(i); @@ -477,7 +477,7 @@ mod test { let (_tx2, rx2) = channel::<int>(); let (tx3, rx3) = channel::<()>(); - spawn(proc() { + spawn(move|| { rx3.recv(); tx1.clone(); assert_eq!(rx3.try_recv(), Err(Empty)); @@ -498,7 +498,7 @@ mod test { let (_tx2, rx2) = channel::<int>(); let (tx3, rx3) = channel::<()>(); - spawn(proc() { + spawn(move|| { rx3.recv(); tx1.clone(); assert_eq!(rx3.try_recv(), Err(Empty)); @@ -518,7 +518,7 @@ mod test { let (tx1, rx1) = channel::<()>(); let (tx2, rx2) = channel::<()>(); let (tx3, rx3) = channel::<()>(); - spawn(proc() { + spawn(move|| { let s = Select::new(); let mut h1 = s.handle(&rx1); let mut h2 = s.handle(&rx2); @@ -624,7 +624,7 @@ mod test { test!(fn oneshot_data_waiting() { let (tx1, rx1) = channel(); let (tx2, rx2) = channel(); - spawn(proc() { + spawn(move|| { select! { () = rx1.recv() => {} } @@ -643,7 +643,7 @@ mod test { tx1.send(()); rx1.recv(); rx1.recv(); - spawn(proc() { + spawn(move|| { select! { () = rx1.recv() => {} } @@ -661,7 +661,7 @@ mod test { drop(tx1.clone()); tx1.send(()); rx1.recv(); - spawn(proc() { + spawn(move|| { select! { () = rx1.recv() => {} } @@ -683,7 +683,7 @@ mod test { test!(fn sync2() { let (tx, rx) = sync_channel::<int>(0); - spawn(proc() { + spawn(move|| { for _ in range(0u, 100) { task::deschedule() } tx.send(1); }); @@ -695,8 +695,8 @@ mod test { test!(fn sync3() { let (tx1, rx1) = sync_channel::<int>(0); let (tx2, rx2): (Sender<int>, Receiver<int>) = channel(); - spawn(proc() { tx1.send(1); }); - spawn(proc() { tx2.send(2); }); + spawn(move|| { tx1.send(1); }); + spawn(move|| { tx2.send(2); }); select! { n = rx1.recv() => { assert_eq!(n, 1); diff --git a/src/libstd/comm/spsc_queue.rs b/src/libstd/comm/spsc_queue.rs index a6b4ab71bac..db8fff772a4 100644 --- a/src/libstd/comm/spsc_queue.rs +++ b/src/libstd/comm/spsc_queue.rs @@ -316,7 +316,7 @@ mod test { let (tx, rx) = channel(); let q2 = q.clone(); - spawn(proc() { + spawn(move|| { for _ in range(0u, 100000) { loop { match q2.pop() { diff --git a/src/libstd/io/comm_adapters.rs b/src/libstd/io/comm_adapters.rs index 4ec1a3764db..308dc094101 100644 --- a/src/libstd/io/comm_adapters.rs +++ b/src/libstd/io/comm_adapters.rs @@ -161,7 +161,7 @@ mod test { #[test] fn test_rx_reader() { let (tx, rx) = channel(); - task::spawn(proc() { + task::spawn(move|| { tx.send(vec![1u8, 2u8]); tx.send(vec![]); tx.send(vec![3u8, 4u8]); @@ -203,7 +203,7 @@ mod test { #[test] fn test_rx_buffer() { let (tx, rx) = channel(); - task::spawn(proc() { + task::spawn(move|| { tx.send(b"he".to_vec()); tx.send(b"llo wo".to_vec()); tx.send(b"".to_vec()); @@ -229,7 +229,7 @@ mod test { writer.write_be_u32(42).unwrap(); let wanted = vec![0u8, 0u8, 0u8, 42u8]; - let got = match task::try(proc() { rx.recv() }) { + let got = match task::try(move|| { rx.recv() }) { Ok(got) => got, Err(_) => panic!(), }; diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index bad86258bb8..d21e0f57b07 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -119,7 +119,7 @@ //! for stream in acceptor.incoming() { //! match stream { //! Err(e) => { /* connection failed */ } -//! Ok(stream) => spawn(proc() { +//! Ok(stream) => spawn(move|| { //! // connection succeeded //! handle_client(stream) //! }) diff --git a/src/libstd/io/net/pipe.rs b/src/libstd/io/net/pipe.rs index ec997b71986..9f2f41c0021 100644 --- a/src/libstd/io/net/pipe.rs +++ b/src/libstd/io/net/pipe.rs @@ -273,13 +273,16 @@ mod tests { use io::fs::PathExtensions; use time::Duration; - pub fn smalltest(server: proc(UnixStream):Send, client: proc(UnixStream):Send) { + pub fn smalltest<F,G>(server: F, client: G) + where F : FnOnce(UnixStream), F : Send, + G : FnOnce(UnixStream), G : Send + { let path1 = next_test_unix(); let path2 = path1.clone(); let mut acceptor = UnixListener::bind(&path1).listen(); - spawn(proc() { + spawn(move|| { match UnixStream::connect(&path2) { Ok(c) => client(c), Err(e) => panic!("failed connect: {}", e), @@ -321,11 +324,11 @@ mod tests { #[test] fn smoke() { - smalltest(proc(mut server) { + smalltest(move |mut server| { let mut buf = [0]; server.read(&mut buf).unwrap(); assert!(buf[0] == 99); - }, proc(mut client) { + }, move|mut client| { client.write(&[99]).unwrap(); }) } @@ -333,18 +336,18 @@ mod tests { #[cfg_attr(windows, ignore)] // FIXME(#12516) #[test] fn read_eof() { - smalltest(proc(mut server) { + smalltest(move|mut server| { let mut buf = [0]; assert!(server.read(&mut buf).is_err()); assert!(server.read(&mut buf).is_err()); - }, proc(_client) { + }, move|_client| { // drop the client }) } #[test] fn write_begone() { - smalltest(proc(mut server) { + smalltest(move|mut server| { let buf = [0]; loop { match server.write(&buf) { @@ -358,7 +361,7 @@ mod tests { } } } - }, proc(_client) { + }, move|_client| { // drop the client }) } @@ -374,7 +377,7 @@ mod tests { Err(e) => panic!("failed listen: {}", e), }; - spawn(proc() { + spawn(move|| { for _ in range(0u, times) { let mut stream = UnixStream::connect(&path2); match stream.write(&[100]) { @@ -408,7 +411,7 @@ mod tests { let addr = next_test_unix(); let mut acceptor = UnixListener::bind(&addr).listen(); - spawn(proc() { + spawn(move|| { let mut s = UnixStream::connect(&addr); let mut buf = [0, 0]; debug!("client reading"); @@ -424,7 +427,7 @@ mod tests { let (tx1, rx1) = channel(); let (tx2, rx2) = channel(); - spawn(proc() { + spawn(move|| { let mut s2 = s2; rx1.recv(); debug!("writer writing"); @@ -447,7 +450,7 @@ mod tests { let (tx1, rx) = channel(); let tx2 = tx1.clone(); - spawn(proc() { + spawn(move|| { let mut s = UnixStream::connect(&addr); s.write(&[1]).unwrap(); rx.recv(); @@ -459,7 +462,7 @@ mod tests { let s2 = s1.clone(); let (done, rx) = channel(); - spawn(proc() { + spawn(move|| { let mut s2 = s2; let mut buf = [0, 0]; s2.read(&mut buf).unwrap(); @@ -478,7 +481,7 @@ mod tests { let addr = next_test_unix(); let mut acceptor = UnixListener::bind(&addr).listen(); - spawn(proc() { + spawn(move|| { let mut s = UnixStream::connect(&addr); let buf = &mut [0, 1]; s.read(buf).unwrap(); @@ -489,7 +492,7 @@ mod tests { let s2 = s1.clone(); let (tx, rx) = channel(); - spawn(proc() { + spawn(move|| { let mut s2 = s2; s2.write(&[1]).unwrap(); tx.send(()); @@ -536,7 +539,7 @@ mod tests { // continue to receive any pending connections. let (tx, rx) = channel(); let addr2 = addr.clone(); - spawn(proc() { + spawn(move|| { tx.send(UnixStream::connect(&addr2).unwrap()); }); let l = rx.recv(); @@ -554,7 +557,7 @@ mod tests { // Unset the timeout and make sure that this always blocks. a.set_timeout(None); let addr2 = addr.clone(); - spawn(proc() { + spawn(move|| { drop(UnixStream::connect(&addr2).unwrap()); }); a.accept().unwrap(); @@ -592,7 +595,7 @@ mod tests { let addr = next_test_unix(); let a = UnixListener::bind(&addr).listen().unwrap(); let (_tx, rx) = channel::<()>(); - spawn(proc() { + spawn(move|| { let mut a = a; let _s = a.accept().unwrap(); let _ = rx.recv_opt(); @@ -629,7 +632,7 @@ mod tests { let addr = next_test_unix(); let a = UnixListener::bind(&addr).listen().unwrap(); let (_tx, rx) = channel::<()>(); - spawn(proc() { + spawn(move|| { let mut a = a; let _s = a.accept().unwrap(); let _ = rx.recv_opt(); @@ -638,7 +641,7 @@ mod tests { let mut s = UnixStream::connect(&addr).unwrap(); let s2 = s.clone(); let (tx, rx) = channel(); - spawn(proc() { + spawn(move|| { let mut s2 = s2; assert!(s2.read(&mut [0]).is_err()); tx.send(()); @@ -655,7 +658,7 @@ mod tests { let addr = next_test_unix(); let mut a = UnixListener::bind(&addr).listen().unwrap(); let (tx, rx) = channel::<()>(); - spawn(proc() { + spawn(move|| { let mut s = UnixStream::connect(&addr).unwrap(); rx.recv(); assert!(s.write(&[0]).is_ok()); @@ -693,7 +696,7 @@ mod tests { let addr = next_test_unix(); let mut a = UnixListener::bind(&addr).listen().unwrap(); let (tx, rx) = channel::<()>(); - spawn(proc() { + spawn(move|| { let mut s = UnixStream::connect(&addr).unwrap(); rx.recv(); let mut amt = 0; @@ -722,7 +725,7 @@ mod tests { let addr = next_test_unix(); let mut a = UnixListener::bind(&addr).listen().unwrap(); let (tx, rx) = channel::<()>(); - spawn(proc() { + spawn(move|| { let mut s = UnixStream::connect(&addr).unwrap(); rx.recv(); assert!(s.write(&[0]).is_ok()); @@ -749,7 +752,7 @@ mod tests { let addr = next_test_unix(); let mut a = UnixListener::bind(&addr).listen().unwrap(); let (tx, rx) = channel::<()>(); - spawn(proc() { + spawn(move|| { let mut s = UnixStream::connect(&addr).unwrap(); rx.recv(); assert!(s.write(&[0]).is_ok()); @@ -759,7 +762,7 @@ mod tests { let mut s = a.accept().unwrap(); let s2 = s.clone(); let (tx2, rx2) = channel(); - spawn(proc() { + spawn(move|| { let mut s2 = s2; assert!(s2.read(&mut [0]).is_ok()); tx2.send(()); @@ -781,10 +784,10 @@ mod tests { let mut a2 = a.clone(); let addr2 = addr.clone(); - spawn(proc() { + spawn(move|| { let _ = UnixStream::connect(&addr2); }); - spawn(proc() { + spawn(move|| { let _ = UnixStream::connect(&addr); }); @@ -804,14 +807,14 @@ mod tests { let (tx, rx) = channel(); let tx2 = tx.clone(); - spawn(proc() { let mut a = a; tx.send(a.accept()) }); - spawn(proc() { let mut a = a2; tx2.send(a.accept()) }); + spawn(move|| { let mut a = a; tx.send(a.accept()) }); + spawn(move|| { let mut a = a2; tx2.send(a.accept()) }); let addr2 = addr.clone(); - spawn(proc() { + spawn(move|| { let _ = UnixStream::connect(&addr2); }); - spawn(proc() { + spawn(move|| { let _ = UnixStream::connect(&addr); }); @@ -837,7 +840,7 @@ mod tests { let mut a2 = a.clone(); let (tx, rx) = channel(); - spawn(proc() { + spawn(move|| { let mut a = a; tx.send(a.accept()); }); diff --git a/src/libstd/io/net/tcp.rs b/src/libstd/io/net/tcp.rs index a7b1b077eff..3c38e23183f 100644 --- a/src/libstd/io/net/tcp.rs +++ b/src/libstd/io/net/tcp.rs @@ -140,7 +140,7 @@ impl TcpStream { /// let mut stream = TcpStream::connect("127.0.0.1:34254").unwrap(); /// let stream2 = stream.clone(); /// - /// spawn(proc() { + /// spawn(move|| { /// // close this stream after one second /// timer::sleep(Duration::seconds(1)); /// let mut stream = stream2; @@ -293,7 +293,7 @@ impl sys_common::AsInner<TcpStreamImp> for TcpStream { /// for stream in acceptor.incoming() { /// match stream { /// Err(e) => { /* connection failed */ } -/// Ok(stream) => spawn(proc() { +/// Ok(stream) => spawn(move|| { /// // connection succeeded /// handle_client(stream) /// }) @@ -420,7 +420,7 @@ impl TcpAcceptor { /// let mut a = TcpListener::bind("127.0.0.1:8482").listen().unwrap(); /// let a2 = a.clone(); /// - /// spawn(proc() { + /// spawn(move|| { /// let mut a2 = a2; /// for socket in a2.incoming() { /// match socket { @@ -509,7 +509,7 @@ mod test { let listener = TcpListener::bind(socket_addr); let mut acceptor = listener.listen(); - spawn(proc() { + spawn(move|| { let mut stream = TcpStream::connect(("localhost", socket_addr.port)); stream.write(&[144]).unwrap(); }); @@ -525,7 +525,7 @@ mod test { let addr = next_test_ip4(); let mut acceptor = TcpListener::bind(addr).listen(); - spawn(proc() { + spawn(move|| { let mut stream = TcpStream::connect(("localhost", addr.port)); stream.write(&[64]).unwrap(); }); @@ -541,7 +541,7 @@ mod test { let addr = next_test_ip4(); let mut acceptor = TcpListener::bind(addr).listen(); - spawn(proc() { + spawn(move|| { let mut stream = TcpStream::connect(("127.0.0.1", addr.port)); stream.write(&[44]).unwrap(); }); @@ -557,7 +557,7 @@ mod test { let addr = next_test_ip6(); let mut acceptor = TcpListener::bind(addr).listen(); - spawn(proc() { + spawn(move|| { let mut stream = TcpStream::connect(("::1", addr.port)); stream.write(&[66]).unwrap(); }); @@ -573,7 +573,7 @@ mod test { let addr = next_test_ip4(); let mut acceptor = TcpListener::bind(addr).listen(); - spawn(proc() { + spawn(move|| { let mut stream = TcpStream::connect(addr); stream.write(&[99]).unwrap(); }); @@ -589,7 +589,7 @@ mod test { let addr = next_test_ip6(); let mut acceptor = TcpListener::bind(addr).listen(); - spawn(proc() { + spawn(move|| { let mut stream = TcpStream::connect(addr); stream.write(&[99]).unwrap(); }); @@ -605,7 +605,7 @@ mod test { let addr = next_test_ip4(); let mut acceptor = TcpListener::bind(addr).listen(); - spawn(proc() { + spawn(move|| { let _stream = TcpStream::connect(addr); // Close }); @@ -621,7 +621,7 @@ mod test { let addr = next_test_ip6(); let mut acceptor = TcpListener::bind(addr).listen(); - spawn(proc() { + spawn(move|| { let _stream = TcpStream::connect(addr); // Close }); @@ -637,7 +637,7 @@ mod test { let addr = next_test_ip4(); let mut acceptor = TcpListener::bind(addr).listen(); - spawn(proc() { + spawn(move|| { let _stream = TcpStream::connect(addr); // Close }); @@ -661,7 +661,7 @@ mod test { let addr = next_test_ip6(); let mut acceptor = TcpListener::bind(addr).listen(); - spawn(proc() { + spawn(move|| { let _stream = TcpStream::connect(addr); // Close }); @@ -686,7 +686,7 @@ mod test { let mut acceptor = TcpListener::bind(addr).listen(); let (tx, rx) = channel(); - spawn(proc() { + spawn(move|| { drop(TcpStream::connect(addr)); tx.send(()); }); @@ -711,7 +711,7 @@ mod test { let mut acceptor = TcpListener::bind(addr).listen(); let (tx, rx) = channel(); - spawn(proc() { + spawn(move|| { drop(TcpStream::connect(addr)); tx.send(()); }); @@ -736,7 +736,7 @@ mod test { let max = 10u; let mut acceptor = TcpListener::bind(addr).listen(); - spawn(proc() { + spawn(move|| { for _ in range(0, max) { let mut stream = TcpStream::connect(addr); stream.write(&[99]).unwrap(); @@ -756,7 +756,7 @@ mod test { let max = 10u; let mut acceptor = TcpListener::bind(addr).listen(); - spawn(proc() { + spawn(move|| { for _ in range(0, max) { let mut stream = TcpStream::connect(addr); stream.write(&[99]).unwrap(); @@ -776,11 +776,11 @@ mod test { static MAX: int = 10; let acceptor = TcpListener::bind(addr).listen(); - spawn(proc() { + spawn(move|| { let mut acceptor = acceptor; for (i, stream) in acceptor.incoming().enumerate().take(MAX as uint) { // Start another task to handle the connection - spawn(proc() { + spawn(move|| { let mut stream = stream; let mut buf = [0]; stream.read(&mut buf).unwrap(); @@ -795,7 +795,7 @@ mod test { fn connect(i: int, addr: SocketAddr) { if i == MAX { return } - spawn(proc() { + spawn(move|| { debug!("connecting"); let mut stream = TcpStream::connect(addr); // Connect again before writing @@ -812,11 +812,11 @@ mod test { static MAX: int = 10; let acceptor = TcpListener::bind(addr).listen(); - spawn(proc() { + spawn(move|| { let mut acceptor = acceptor; for (i, stream) in acceptor.incoming().enumerate().take(MAX as uint) { // Start another task to handle the connection - spawn(proc() { + spawn(move|| { let mut stream = stream; let mut buf = [0]; stream.read(&mut buf).unwrap(); @@ -831,7 +831,7 @@ mod test { fn connect(i: int, addr: SocketAddr) { if i == MAX { return } - spawn(proc() { + spawn(move|| { debug!("connecting"); let mut stream = TcpStream::connect(addr); // Connect again before writing @@ -848,11 +848,11 @@ mod test { let addr = next_test_ip4(); let acceptor = TcpListener::bind(addr).listen(); - spawn(proc() { + spawn(move|| { let mut acceptor = acceptor; for stream in acceptor.incoming().take(MAX as uint) { // Start another task to handle the connection - spawn(proc() { + spawn(move|| { let mut stream = stream; let mut buf = [0]; stream.read(&mut buf).unwrap(); @@ -867,7 +867,7 @@ mod test { fn connect(i: int, addr: SocketAddr) { if i == MAX { return } - spawn(proc() { + spawn(move|| { debug!("connecting"); let mut stream = TcpStream::connect(addr); // Connect again before writing @@ -884,11 +884,11 @@ mod test { let addr = next_test_ip6(); let acceptor = TcpListener::bind(addr).listen(); - spawn(proc() { + spawn(move|| { let mut acceptor = acceptor; for stream in acceptor.incoming().take(MAX as uint) { // Start another task to handle the connection - spawn(proc() { + spawn(move|| { let mut stream = stream; let mut buf = [0]; stream.read(&mut buf).unwrap(); @@ -903,7 +903,7 @@ mod test { fn connect(i: int, addr: SocketAddr) { if i == MAX { return } - spawn(proc() { + spawn(move|| { debug!("connecting"); let mut stream = TcpStream::connect(addr); // Connect again before writing @@ -926,7 +926,7 @@ mod test { pub fn peer_name(addr: SocketAddr) { let acceptor = TcpListener::bind(addr).listen(); - spawn(proc() { + spawn(move|| { let mut acceptor = acceptor; acceptor.accept().unwrap(); }); @@ -961,7 +961,7 @@ mod test { fn partial_read() { let addr = next_test_ip4(); let (tx, rx) = channel(); - spawn(proc() { + spawn(move|| { let mut srv = TcpListener::bind(addr).listen().unwrap(); tx.send(()); let mut cl = srv.accept().unwrap(); @@ -998,7 +998,7 @@ mod test { let addr = next_test_ip4(); let (tx, rx) = channel(); - spawn(proc() { + spawn(move|| { rx.recv(); let _stream = TcpStream::connect(addr).unwrap(); // Close @@ -1023,7 +1023,7 @@ mod test { let addr = next_test_ip4(); let mut acceptor = TcpListener::bind(addr).listen(); - spawn(proc() { + spawn(move|| { let mut s = TcpStream::connect(addr); let mut buf = [0, 0]; assert_eq!(s.read(&mut buf), Ok(1)); @@ -1036,7 +1036,7 @@ mod test { let (tx1, rx1) = channel(); let (tx2, rx2) = channel(); - spawn(proc() { + spawn(move|| { let mut s2 = s2; rx1.recv(); s2.write(&[1]).unwrap(); @@ -1055,7 +1055,7 @@ mod test { let (tx1, rx) = channel(); let tx2 = tx1.clone(); - spawn(proc() { + spawn(move|| { let mut s = TcpStream::connect(addr); s.write(&[1]).unwrap(); rx.recv(); @@ -1067,7 +1067,7 @@ mod test { let s2 = s1.clone(); let (done, rx) = channel(); - spawn(proc() { + spawn(move|| { let mut s2 = s2; let mut buf = [0, 0]; s2.read(&mut buf).unwrap(); @@ -1086,7 +1086,7 @@ mod test { let addr = next_test_ip4(); let mut acceptor = TcpListener::bind(addr).listen(); - spawn(proc() { + spawn(move|| { let mut s = TcpStream::connect(addr); let mut buf = [0, 1]; s.read(&mut buf).unwrap(); @@ -1097,7 +1097,7 @@ mod test { let s2 = s1.clone(); let (done, rx) = channel(); - spawn(proc() { + spawn(move|| { let mut s2 = s2; s2.write(&[1]).unwrap(); done.send(()); @@ -1111,7 +1111,7 @@ mod test { fn shutdown_smoke() { let addr = next_test_ip4(); let a = TcpListener::bind(addr).unwrap().listen(); - spawn(proc() { + spawn(move|| { let mut a = a; let mut c = a.accept().unwrap(); assert_eq!(c.read_to_end(), Ok(vec!())); @@ -1145,7 +1145,7 @@ mod test { // flakiness. if !cfg!(target_os = "freebsd") { let (tx, rx) = channel(); - spawn(proc() { + spawn(move|| { tx.send(TcpStream::connect(addr).unwrap()); }); let _l = rx.recv(); @@ -1162,7 +1162,7 @@ mod test { // Unset the timeout and make sure that this always blocks. a.set_timeout(None); - spawn(proc() { + spawn(move|| { drop(TcpStream::connect(addr).unwrap()); }); a.accept().unwrap(); @@ -1173,7 +1173,7 @@ mod test { let addr = next_test_ip4(); let a = TcpListener::bind(addr).listen().unwrap(); let (_tx, rx) = channel::<()>(); - spawn(proc() { + spawn(move|| { let mut a = a; let _s = a.accept().unwrap(); let _ = rx.recv_opt(); @@ -1210,7 +1210,7 @@ mod test { let addr = next_test_ip4(); let a = TcpListener::bind(addr).listen().unwrap(); let (_tx, rx) = channel::<()>(); - spawn(proc() { + spawn(move|| { let mut a = a; let _s = a.accept().unwrap(); let _ = rx.recv_opt(); @@ -1219,7 +1219,7 @@ mod test { let mut s = TcpStream::connect(addr).unwrap(); let s2 = s.clone(); let (tx, rx) = channel(); - spawn(proc() { + spawn(move|| { let mut s2 = s2; assert!(s2.read(&mut [0]).is_err()); tx.send(()); @@ -1236,7 +1236,7 @@ mod test { let addr = next_test_ip6(); let mut a = TcpListener::bind(addr).listen().unwrap(); let (tx, rx) = channel::<()>(); - spawn(proc() { + spawn(move|| { let mut s = TcpStream::connect(addr).unwrap(); rx.recv(); assert!(s.write(&[0]).is_ok()); @@ -1269,7 +1269,7 @@ mod test { let addr = next_test_ip6(); let mut a = TcpListener::bind(addr).listen().unwrap(); let (tx, rx) = channel::<()>(); - spawn(proc() { + spawn(move|| { let mut s = TcpStream::connect(addr).unwrap(); rx.recv(); let mut amt = 0; @@ -1298,7 +1298,7 @@ mod test { let addr = next_test_ip6(); let mut a = TcpListener::bind(addr).listen().unwrap(); let (tx, rx) = channel::<()>(); - spawn(proc() { + spawn(move|| { let mut s = TcpStream::connect(addr).unwrap(); rx.recv(); assert!(s.write(&[0]).is_ok()); @@ -1326,7 +1326,7 @@ mod test { let addr = next_test_ip6(); let mut a = TcpListener::bind(addr).listen().unwrap(); let (tx, rx) = channel::<()>(); - spawn(proc() { + spawn(move|| { let mut s = TcpStream::connect(addr).unwrap(); rx.recv(); assert_eq!(s.write(&[0]), Ok(())); @@ -1336,7 +1336,7 @@ mod test { let mut s = a.accept().unwrap(); let s2 = s.clone(); let (tx2, rx2) = channel(); - spawn(proc() { + spawn(move|| { let mut s2 = s2; assert_eq!(s2.read(&mut [0]), Ok(1)); tx2.send(()); @@ -1359,7 +1359,7 @@ mod test { let (tx, rx) = channel(); let (txdone, rxdone) = channel(); let txdone2 = txdone.clone(); - spawn(proc() { + spawn(move|| { let mut tcp = TcpStream::connect(addr).unwrap(); rx.recv(); tcp.write_u8(0).unwrap(); @@ -1370,7 +1370,7 @@ mod test { let tcp = accept.accept().unwrap(); let tcp2 = tcp.clone(); let txdone3 = txdone.clone(); - spawn(proc() { + spawn(move|| { let mut tcp2 = tcp2; tcp2.read_u8().unwrap(); txdone3.send(()); @@ -1396,10 +1396,10 @@ mod test { let mut a = l.listen().unwrap(); let mut a2 = a.clone(); - spawn(proc() { + spawn(move|| { let _ = TcpStream::connect(addr); }); - spawn(proc() { + spawn(move|| { let _ = TcpStream::connect(addr); }); @@ -1417,13 +1417,13 @@ mod test { let (tx, rx) = channel(); let tx2 = tx.clone(); - spawn(proc() { let mut a = a; tx.send(a.accept()) }); - spawn(proc() { let mut a = a2; tx2.send(a.accept()) }); + spawn(move|| { let mut a = a; tx.send(a.accept()) }); + spawn(move|| { let mut a = a2; tx2.send(a.accept()) }); - spawn(proc() { + spawn(move|| { let _ = TcpStream::connect(addr); }); - spawn(proc() { + spawn(move|| { let _ = TcpStream::connect(addr); }); @@ -1449,7 +1449,7 @@ mod test { let mut a2 = a.clone(); let (tx, rx) = channel(); - spawn(proc() { + spawn(move|| { let mut a = a; tx.send(a.accept()); }); diff --git a/src/libstd/io/net/udp.rs b/src/libstd/io/net/udp.rs index b23921ba359..78951b8dae2 100644 --- a/src/libstd/io/net/udp.rs +++ b/src/libstd/io/net/udp.rs @@ -272,7 +272,7 @@ mod test { let (tx1, rx1) = channel(); let (tx2, rx2) = channel(); - spawn(proc() { + spawn(move|| { match UdpSocket::bind(client_ip) { Ok(ref mut client) => { rx1.recv(); @@ -307,7 +307,7 @@ mod test { let client_ip = next_test_ip6(); let (tx, rx) = channel::<()>(); - spawn(proc() { + spawn(move|| { match UdpSocket::bind(client_ip) { Ok(ref mut client) => { rx.recv(); @@ -343,7 +343,7 @@ mod test { let (tx1, rx1) = channel(); let (tx2, rx2) = channel(); - spawn(proc() { + spawn(move|| { let send_as = |ip, val: &[u8]| { match UdpSocket::bind(ip) { Ok(client) => { @@ -387,7 +387,7 @@ mod test { let (tx1, rx1) = channel(); let (tx2, rx2) = channel(); - spawn(proc() { + spawn(move|| { match UdpSocket::bind(client_ip) { Ok(client) => { let client = box client; @@ -449,7 +449,7 @@ mod test { let mut sock1 = UdpSocket::bind(addr1).unwrap(); let sock2 = UdpSocket::bind(addr2).unwrap(); - spawn(proc() { + spawn(move|| { let mut sock2 = sock2; let mut buf = [0, 0]; assert_eq!(sock2.recv_from(&mut buf), Ok((1, addr1))); @@ -461,7 +461,7 @@ mod test { let (tx1, rx1) = channel(); let (tx2, rx2) = channel(); - spawn(proc() { + spawn(move|| { let mut sock3 = sock3; rx1.recv(); sock3.send_to(&[1], addr2).unwrap(); @@ -482,7 +482,7 @@ mod test { let (tx1, rx) = channel(); let tx2 = tx1.clone(); - spawn(proc() { + spawn(move|| { let mut sock2 = sock2; sock2.send_to(&[1], addr1).unwrap(); rx.recv(); @@ -493,7 +493,7 @@ mod test { let sock3 = sock1.clone(); let (done, rx) = channel(); - spawn(proc() { + spawn(move|| { let mut sock3 = sock3; let mut buf = [0, 0]; sock3.recv_from(&mut buf).unwrap(); @@ -517,7 +517,7 @@ mod test { let (tx, rx) = channel(); let (serv_tx, serv_rx) = channel(); - spawn(proc() { + spawn(move|| { let mut sock2 = sock2; let mut buf = [0, 1]; @@ -533,7 +533,7 @@ mod test { let (done, rx) = channel(); let tx2 = tx.clone(); - spawn(proc() { + spawn(move|| { let mut sock3 = sock3; match sock3.send_to(&[1], addr2) { Ok(..) => { let _ = tx2.send_opt(()); } @@ -560,7 +560,7 @@ mod test { let (tx, rx) = channel(); let (tx2, rx2) = channel(); - spawn(proc() { + spawn(move|| { let mut a = UdpSocket::bind(addr2).unwrap(); assert_eq!(a.recv_from(&mut [0]), Ok((1, addr1))); assert_eq!(a.send_to(&[0], addr1), Ok(())); diff --git a/src/libstd/io/pipe.rs b/src/libstd/io/pipe.rs index 41676cdf6e9..73a893c4f2d 100644 --- a/src/libstd/io/pipe.rs +++ b/src/libstd/io/pipe.rs @@ -123,7 +123,7 @@ mod test { let out = PipeStream::open(writer); let mut input = PipeStream::open(reader); let (tx, rx) = channel(); - spawn(proc() { + spawn(move|| { let mut out = out; out.write(&[10]).unwrap(); rx.recv(); // don't close the pipe until the other read has finished diff --git a/src/libstd/io/process.rs b/src/libstd/io/process.rs index c46a6e82e44..9ba6381c8c3 100644 --- a/src/libstd/io/process.rs +++ b/src/libstd/io/process.rs @@ -693,7 +693,7 @@ impl Process { fn read(stream: Option<io::PipeStream>) -> Receiver<IoResult<Vec<u8>>> { let (tx, rx) = channel(); match stream { - Some(stream) => spawn(proc() { + Some(stream) => spawn(move |:| { let mut stream = stream; tx.send(stream.read_to_end()) }), @@ -1155,14 +1155,14 @@ mod tests { fn wait_timeout2() { let (tx, rx) = channel(); let tx2 = tx.clone(); - spawn(proc() { + spawn(move|| { let mut p = sleeper(); p.set_timeout(Some(10)); assert_eq!(p.wait().err().unwrap().kind, TimedOut); p.signal_kill().unwrap(); tx.send(()); }); - spawn(proc() { + spawn(move|| { let mut p = sleeper(); p.set_timeout(Some(10)); assert_eq!(p.wait().err().unwrap().kind, TimedOut); diff --git a/src/libstd/io/stdio.rs b/src/libstd/io/stdio.rs index 8438c9fb441..344012a09a0 100644 --- a/src/libstd/io/stdio.rs +++ b/src/libstd/io/stdio.rs @@ -528,7 +528,7 @@ mod tests { let (tx, rx) = channel(); let (mut r, w) = (ChanReader::new(rx), ChanWriter::new(tx)); - spawn(proc() { + spawn(move|| { set_stdout(box w); println!("hello!"); }); @@ -542,7 +542,7 @@ mod tests { let (tx, rx) = channel(); let (mut r, w) = (ChanReader::new(rx), ChanWriter::new(tx)); - spawn(proc() { + spawn(move|| { ::realstd::io::stdio::set_stderr(box w); panic!("my special message"); }); diff --git a/src/libstd/io/timer.rs b/src/libstd/io/timer.rs index ad02b534d04..79048c37ab5 100644 --- a/src/libstd/io/timer.rs +++ b/src/libstd/io/timer.rs @@ -357,7 +357,7 @@ mod test { let mut timer = Timer::new().unwrap(); let timer_rx = timer.periodic(Duration::milliseconds(1000)); - spawn(proc() { + spawn(move|| { let _ = timer_rx.recv_opt(); }); @@ -371,7 +371,7 @@ mod test { let mut timer = Timer::new().unwrap(); let timer_rx = timer.periodic(Duration::milliseconds(1000)); - spawn(proc() { + spawn(move|| { let _ = timer_rx.recv_opt(); }); @@ -384,7 +384,7 @@ mod test { let mut timer = Timer::new().unwrap(); let timer_rx = timer.periodic(Duration::milliseconds(1000)); - spawn(proc() { + spawn(move|| { let _ = timer_rx.recv_opt(); }); diff --git a/src/libstd/macros.rs b/src/libstd/macros.rs index 76419bee41c..900c223c70b 100644 --- a/src/libstd/macros.rs +++ b/src/libstd/macros.rs @@ -358,8 +358,8 @@ macro_rules! vec[ /// # fn long_running_task() {} /// # fn calculate_the_answer() -> int { 42i } /// -/// spawn(proc() { long_running_task(); tx1.send(()) }); -/// spawn(proc() { tx2.send(calculate_the_answer()) }); +/// spawn(move|| { long_running_task(); tx1.send(()) }); +/// spawn(move|| { tx2.send(calculate_the_answer()) }); /// /// select! ( /// () = rx1.recv() => println!("the long running task finished first"), diff --git a/src/libstd/path/posix.rs b/src/libstd/path/posix.rs index 3daba53cd86..4041a6f60d7 100644 --- a/src/libstd/path/posix.rs +++ b/src/libstd/path/posix.rs @@ -515,17 +515,17 @@ mod tests { #[test] fn test_null_byte() { use task; - let result = task::try(proc() { + let result = task::try(move|| { Path::new(b"foo/bar\0") }); assert!(result.is_err()); - let result = task::try(proc() { + let result = task::try(move|| { Path::new("test").set_filename(b"f\0o") }); assert!(result.is_err()); - let result = task::try(proc() { + let result = task::try(move|| { Path::new("test").push(b"f\0o"); }); assert!(result.is_err()); diff --git a/src/libstd/path/windows.rs b/src/libstd/path/windows.rs index e1b0d9b1395..3983e365ae1 100644 --- a/src/libstd/path/windows.rs +++ b/src/libstd/path/windows.rs @@ -1299,17 +1299,17 @@ mod tests { #[test] fn test_null_byte() { use task; - let result = task::try(proc() { + let result = task::try(move|| { Path::new(b"foo/bar\0") }); assert!(result.is_err()); - let result = task::try(proc() { + let result = task::try(move|| { Path::new("test").set_filename(b"f\0o") }); assert!(result.is_err()); - let result = task::try(proc() { + let result = task::try(move|| { Path::new("test").push(b"f\0o"); }); assert!(result.is_err()); diff --git a/src/libstd/rand/os.rs b/src/libstd/rand/os.rs index 37628b65388..5405892535c 100644 --- a/src/libstd/rand/os.rs +++ b/src/libstd/rand/os.rs @@ -355,7 +355,7 @@ mod test { for _ in range(0u, 20) { let (tx, rx) = channel(); txs.push(tx); - task::spawn(proc() { + task::spawn(move|| { // wait until all the tasks are ready to go. rx.recv(); diff --git a/src/libstd/sync/atomic.rs b/src/libstd/sync/atomic.rs index 2bb55188113..fe5b962fa4b 100644 --- a/src/libstd/sync/atomic.rs +++ b/src/libstd/sync/atomic.rs @@ -47,7 +47,7 @@ //! let spinlock = Arc::new(AtomicUint::new(1)); //! //! let spinlock_clone = spinlock.clone(); -//! spawn(proc() { +//! spawn(move|| { //! spinlock_clone.store(0, SeqCst); //! }); //! @@ -68,7 +68,7 @@ //! let shared_big_object = Arc::new(AtomicOption::empty()); //! //! let shared_big_object_clone = shared_big_object.clone(); -//! spawn(proc() { +//! spawn(move|| { //! let unwrapped_big_object = shared_big_object_clone.take(SeqCst); //! if unwrapped_big_object.is_some() { //! println!("got a big object from another task"); diff --git a/src/libstd/sync/barrier.rs b/src/libstd/sync/barrier.rs index 5e6dc6ec650..1b8574604a0 100644 --- a/src/libstd/sync/barrier.rs +++ b/src/libstd/sync/barrier.rs @@ -21,7 +21,7 @@ use sync::{Mutex, Condvar}; /// let c = barrier.clone(); /// // The same messages will be printed together. /// // You will NOT see any interleaving. -/// spawn(proc() { +/// spawn(move|| { /// println!("before wait"); /// c.wait(); /// println!("after wait"); @@ -94,7 +94,7 @@ mod tests { for _ in range(0u, 9) { let c = barrier.clone(); let tx = tx.clone(); - spawn(proc() { + spawn(move|| { c.wait(); tx.send(true); }); diff --git a/src/libstd/sync/condvar.rs b/src/libstd/sync/condvar.rs index 0fdd57b2792..3bdab261e19 100644 --- a/src/libstd/sync/condvar.rs +++ b/src/libstd/sync/condvar.rs @@ -41,7 +41,7 @@ use time::Duration; /// let pair2 = pair.clone(); /// /// // Inside of our lock, spawn a new thread, and then wait for it to start -/// spawn(proc() { +/// spawn(move|| { /// let &(ref lock, ref cvar) = &*pair2; /// let mut started = lock.lock(); /// *started = true; @@ -282,7 +282,7 @@ mod tests { static M: StaticMutex = MUTEX_INIT; let g = M.lock(); - spawn(proc() { + spawn(move|| { let _g = M.lock(); C.notify_one(); }); @@ -300,7 +300,7 @@ mod tests { for _ in range(0, N) { let data = data.clone(); let tx = tx.clone(); - spawn(proc() { + spawn(move|| { let &(ref lock, ref cond) = &*data; let mut cnt = lock.lock(); *cnt += 1; @@ -334,7 +334,7 @@ mod tests { let g = M.lock(); assert!(!C.wait_timeout(&g, Duration::nanoseconds(1000))); - spawn(proc() { + spawn(move|| { let _g = M.lock(); C.notify_one(); }); @@ -351,7 +351,7 @@ mod tests { static C: StaticCondvar = CONDVAR_INIT; let g = M1.lock(); - spawn(proc() { + spawn(move|| { let _g = M1.lock(); C.notify_one(); }); diff --git a/src/libstd/sync/mutex.rs b/src/libstd/sync/mutex.rs index 4e07d54c57e..33f8d254c71 100644 --- a/src/libstd/sync/mutex.rs +++ b/src/libstd/sync/mutex.rs @@ -47,7 +47,7 @@ use sys_common::mutex as sys; /// let (tx, rx) = channel(); /// for _ in range(0u, 10) { /// let (data, tx) = (data.clone(), tx.clone()); -/// spawn(proc() { +/// spawn(move|| { /// // The shared static can only be accessed once the lock is held. /// // Our non-atomic increment is safe because we're the only thread /// // which can access the shared state when the lock is held. @@ -313,9 +313,9 @@ mod test { let (tx, rx) = channel(); for _ in range(0, K) { let tx2 = tx.clone(); - spawn(proc() { inc(); tx2.send(()); }); + spawn(move|| { inc(); tx2.send(()); }); let tx2 = tx.clone(); - spawn(proc() { inc(); tx2.send(()); }); + spawn(move|| { inc(); tx2.send(()); }); } drop(tx); @@ -339,7 +339,7 @@ mod test { let arc = Arc::new((Mutex::new(false), Condvar::new())); let arc2 = arc.clone(); let (tx, rx) = channel(); - spawn(proc() { + spawn(move|| { // wait until parent gets in rx.recv(); let &(ref lock, ref cvar) = &*arc2; @@ -364,7 +364,7 @@ mod test { let arc2 = arc.clone(); let (tx, rx) = channel(); - spawn(proc() { + spawn(move|| { rx.recv(); let &(ref lock, ref cvar) = &*arc2; let _g = lock.lock(); @@ -386,7 +386,7 @@ mod test { fn test_mutex_arc_poison() { let arc = Arc::new(Mutex::new(1i)); let arc2 = arc.clone(); - let _ = task::try(proc() { + let _ = task::try(move|| { let lock = arc2.lock(); assert_eq!(*lock, 2); }); @@ -401,7 +401,7 @@ mod test { let arc = Arc::new(Mutex::new(1i)); let arc2 = Arc::new(Mutex::new(arc)); let (tx, rx) = channel(); - spawn(proc() { + spawn(move|| { let lock = arc2.lock(); let lock2 = lock.deref().lock(); assert_eq!(*lock2, 1); @@ -414,7 +414,7 @@ mod test { fn test_mutex_arc_access_in_unwind() { let arc = Arc::new(Mutex::new(1i)); let arc2 = arc.clone(); - let _ = task::try::<()>(proc() { + let _ = task::try(move|| -> () { struct Unwinder { i: Arc<Mutex<int>>, } diff --git a/src/libstd/sync/once.rs b/src/libstd/sync/once.rs index 1bcdc760fc6..263937c5cbe 100644 --- a/src/libstd/sync/once.rs +++ b/src/libstd/sync/once.rs @@ -142,7 +142,7 @@ mod test { let (tx, rx) = channel(); for _ in range(0u, 10) { let tx = tx.clone(); - spawn(proc() { + spawn(move|| { for _ in range(0u, 4) { task::deschedule() } unsafe { O.doit(|| { diff --git a/src/libstd/sync/rwlock.rs b/src/libstd/sync/rwlock.rs index a4f8b1df6af..b6d6aa989c5 100644 --- a/src/libstd/sync/rwlock.rs +++ b/src/libstd/sync/rwlock.rs @@ -387,7 +387,7 @@ mod tests { let (tx, rx) = channel::<()>(); for _ in range(0, N) { let tx = tx.clone(); - spawn(proc() { + spawn(move|| { let mut rng = rand::task_rng(); for _ in range(0, M) { if rng.gen_weighted_bool(N) { @@ -409,7 +409,7 @@ mod tests { fn test_rw_arc_poison_wr() { let arc = Arc::new(RWLock::new(1i)); let arc2 = arc.clone(); - let _ = task::try(proc() { + let _ = task::try(move|| { let lock = arc2.write(); assert_eq!(*lock, 2); }); @@ -422,7 +422,7 @@ mod tests { fn test_rw_arc_poison_ww() { let arc = Arc::new(RWLock::new(1i)); let arc2 = arc.clone(); - let _ = task::try(proc() { + let _ = task::try(move|| { let lock = arc2.write(); assert_eq!(*lock, 2); }); @@ -434,7 +434,7 @@ mod tests { fn test_rw_arc_no_poison_rr() { let arc = Arc::new(RWLock::new(1i)); let arc2 = arc.clone(); - let _ = task::try(proc() { + let _ = task::try(move|| { let lock = arc2.read(); assert_eq!(*lock, 2); }); @@ -445,7 +445,7 @@ mod tests { fn test_rw_arc_no_poison_rw() { let arc = Arc::new(RWLock::new(1i)); let arc2 = arc.clone(); - let _ = task::try(proc() { + let _ = task::try(move|| { let lock = arc2.read(); assert_eq!(*lock, 2); }); @@ -459,7 +459,7 @@ mod tests { let arc2 = arc.clone(); let (tx, rx) = channel(); - task::spawn(proc() { + task::spawn(move|| { let mut lock = arc2.write(); for _ in range(0u, 10) { let tmp = *lock; @@ -474,7 +474,7 @@ mod tests { let mut children = Vec::new(); for _ in range(0u, 5) { let arc3 = arc.clone(); - children.push(task::try_future(proc() { + children.push(task::try_future(move|| { let lock = arc3.read(); assert!(*lock >= 0); })); @@ -495,7 +495,7 @@ mod tests { fn test_rw_arc_access_in_unwind() { let arc = Arc::new(RWLock::new(1i)); let arc2 = arc.clone(); - let _ = task::try::<()>(proc() { + let _ = task::try(move|| -> () { struct Unwinder { i: Arc<RWLock<int>>, } diff --git a/src/libstd/sync/semaphore.rs b/src/libstd/sync/semaphore.rs index 03fb84c38d4..574b0f22bee 100644 --- a/src/libstd/sync/semaphore.rs +++ b/src/libstd/sync/semaphore.rs @@ -127,7 +127,7 @@ mod tests { fn test_sem_as_mutex() { let s = Arc::new(Semaphore::new(1)); let s2 = s.clone(); - spawn(proc() { + spawn(move|| { let _g = s2.access(); }); let _g = s.access(); @@ -139,7 +139,7 @@ mod tests { let (tx, rx) = channel(); let s = Arc::new(Semaphore::new(0)); let s2 = s.clone(); - spawn(proc() { + spawn(move|| { s2.acquire(); tx.send(()); }); @@ -150,7 +150,7 @@ mod tests { let (tx, rx) = channel(); let s = Arc::new(Semaphore::new(0)); let s2 = s.clone(); - spawn(proc() { + spawn(move|| { s2.release(); let _ = rx.recv(); }); @@ -166,7 +166,7 @@ mod tests { let s2 = s.clone(); let (tx1, rx1) = channel(); let (tx2, rx2) = channel(); - spawn(proc() { + spawn(move|| { let _g = s2.access(); let _ = rx2.recv(); tx1.send(()); @@ -183,7 +183,7 @@ mod tests { let (tx, rx) = channel(); { let _g = s.access(); - spawn(proc() { + spawn(move|| { tx.send(()); drop(s2.access()); tx.send(()); diff --git a/src/libstd/sync/task_pool.rs b/src/libstd/sync/task_pool.rs index a684c6502ae..fa5b62a202b 100644 --- a/src/libstd/sync/task_pool.rs +++ b/src/libstd/sync/task_pool.rs @@ -12,17 +12,18 @@ use core::prelude::*; -use task::spawn; +use task::{spawn}; use comm::{channel, Sender, Receiver}; use sync::{Arc, Mutex}; +use thunk::Thunk; struct Sentinel<'a> { - jobs: &'a Arc<Mutex<Receiver<proc(): Send>>>, + jobs: &'a Arc<Mutex<Receiver<Thunk>>>, active: bool } impl<'a> Sentinel<'a> { - fn new(jobs: &Arc<Mutex<Receiver<proc(): Send>>>) -> Sentinel { + fn new(jobs: &Arc<Mutex<Receiver<Thunk>>>) -> Sentinel { Sentinel { jobs: jobs, active: true @@ -60,7 +61,7 @@ impl<'a> Drop for Sentinel<'a> { /// let (tx, rx) = channel(); /// for _ in range(0, 8u) { /// let tx = tx.clone(); -/// pool.execute(proc() { +/// pool.execute(move|| { /// tx.send(1u); /// }); /// } @@ -146,7 +147,7 @@ mod test { let (tx, rx) = channel(); for _ in range(0, TEST_TASKS) { let tx = tx.clone(); - pool.execute(proc() { + pool.execute(move|| { tx.send(1u); }); } @@ -168,14 +169,14 @@ mod test { // Panic all the existing tasks. for _ in range(0, TEST_TASKS) { - pool.execute(proc() { panic!() }); + pool.execute(move|| -> () { panic!() }); } // Ensure new tasks were spawned to compensate. let (tx, rx) = channel(); for _ in range(0, TEST_TASKS) { let tx = tx.clone(); - pool.execute(proc() { + pool.execute(move|| { tx.send(1u); }); } @@ -193,7 +194,7 @@ mod test { // Panic all the existing tasks in a bit. for _ in range(0, TEST_TASKS) { let waiter = waiter.clone(); - pool.execute(proc() { + pool.execute(move|| { waiter.wait(); panic!(); }); diff --git a/src/libstd/sys/common/helper_thread.rs b/src/libstd/sys/common/helper_thread.rs index 6c5fc3005ed..96b4accd4bd 100644 --- a/src/libstd/sys/common/helper_thread.rs +++ b/src/libstd/sys/common/helper_thread.rs @@ -83,7 +83,7 @@ impl<M: Send> Helper<M> { *self.signal.get() = send as uint; let t = f(); - task::spawn(proc() { + task::spawn(move |:| { bookkeeping::decrement(); helper(receive, rx, t); let _g = self.lock.lock(); @@ -91,7 +91,7 @@ impl<M: Send> Helper<M> { self.cond.notify_one() }); - rustrt::at_exit(proc() { self.shutdown() }); + rustrt::at_exit(move|:| { self.shutdown() }); *self.initialized.get() = true; } } diff --git a/src/libstd/sys/unix/process.rs b/src/libstd/sys/unix/process.rs index f71b34304ab..4ef1757cc3a 100644 --- a/src/libstd/sys/unix/process.rs +++ b/src/libstd/sys/unix/process.rs @@ -94,8 +94,8 @@ impl Process { mem::transmute::<&ProcessConfig<K,V>,&'static ProcessConfig<K,V>>(cfg) }; - with_envp(cfg.env(), proc(envp) { - with_argv(cfg.program(), cfg.args(), proc(argv) unsafe { + with_envp(cfg.env(), move|: envp: *const c_void| { + with_argv(cfg.program(), cfg.args(), move|: argv: *const *const libc::c_char| unsafe { let (input, mut output) = try!(sys::os::pipe()); // We may use this in the child, so perform allocations before the diff --git a/src/libstd/sys/windows/thread_local.rs b/src/libstd/sys/windows/thread_local.rs index b841f6d3a2b..969b322af99 100644 --- a/src/libstd/sys/windows/thread_local.rs +++ b/src/libstd/sys/windows/thread_local.rs @@ -131,7 +131,7 @@ fn init_dtors() { DTORS = mem::transmute(dtors); } - rustrt::at_exit(proc() unsafe { + rustrt::at_exit(move|| unsafe { mem::transmute::<_, Box<Exclusive<Vec<(Key, Dtor)>>>>(DTORS); DTORS = 0 as *mut _; }); diff --git a/src/libstd/thread_local/mod.rs b/src/libstd/thread_local/mod.rs index b85b6eccb77..2d5766c2393 100644 --- a/src/libstd/thread_local/mod.rs +++ b/src/libstd/thread_local/mod.rs @@ -77,7 +77,7 @@ pub mod scoped; /// }); /// /// // each thread starts out with the initial value of 1 -/// spawn(proc() { +/// spawn(move|| { /// FOO.with(|f| { /// assert_eq!(*f.borrow(), 1); /// *f.borrow_mut() = 3; @@ -471,7 +471,7 @@ mod tests { *f.get() = 2; }); let (tx, rx) = channel(); - spawn(proc() { + spawn(move|| { FOO.with(|f| unsafe { assert_eq!(*f.get(), 1); }); @@ -491,7 +491,7 @@ mod tests { }) let (tx, rx) = channel(); - spawn(proc() unsafe { + spawn(move|| unsafe { let mut tx = Some(tx); FOO.with(|f| { *f.get() = Some(Foo(tx.take().unwrap())); @@ -539,7 +539,7 @@ mod tests { } } - Thread::start(proc() { + Thread::start(move|| { drop(S1); }).join(); } @@ -557,7 +557,7 @@ mod tests { } } - Thread::start(proc() unsafe { + Thread::start(move|| unsafe { K1.with(|s| *s.get() = Some(S1)); }).join(); } @@ -584,7 +584,7 @@ mod tests { } let (tx, rx) = channel(); - spawn(proc() unsafe { + spawn(move|| unsafe { let mut tx = Some(tx); K1.with(|s| *s.get() = Some(S1(tx.take().unwrap()))); }); |
