diff options
Diffstat (limited to 'src/test/ui/run-pass/threads-sendsync/sendfn-spawn-with-fn-arg.rs')
| -rw-r--r-- | src/test/ui/run-pass/threads-sendsync/sendfn-spawn-with-fn-arg.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/test/ui/run-pass/threads-sendsync/sendfn-spawn-with-fn-arg.rs b/src/test/ui/run-pass/threads-sendsync/sendfn-spawn-with-fn-arg.rs new file mode 100644 index 00000000000..ecd0bfb1440 --- /dev/null +++ b/src/test/ui/run-pass/threads-sendsync/sendfn-spawn-with-fn-arg.rs @@ -0,0 +1,32 @@ +// Copyright 2012 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// ignore-emscripten no threads support + +#![feature(box_syntax)] + +use std::thread; + +pub fn main() { test05(); } + +fn test05_start<F:FnOnce(isize)>(f: F) { + f(22); +} + +fn test05() { + let three: Box<_> = box 3; + let fn_to_send = move|n:isize| { + println!("{}", *three + n); // will copy x into the closure + assert_eq!(*three, 3); + }; + thread::spawn(move|| { + test05_start(fn_to_send); + }).join().ok().unwrap(); +} |
