]>
git.proxmox.com Git - rustc.git/blob - src/test/run-pass/send-is-not-static-par-for.rs
1 // Copyright 2015 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
11 // pretty-expanded FIXME #23616
13 #![feature(core, std_misc, scoped)]
17 fn par_for
<I
, F
>(iter
: I
, f
: F
)
19 <I
as Iterator
>::Item
: Send
,
20 F
: Fn(<I
as Iterator
>::Item
) + Sync
23 let _guards
: Vec
<_
> = iter
.map(|elem
| {
24 thread
::scoped(move || {
31 let sum_lengths
= Mutex
::new(0);
32 par_for(x
.windows(4), |x
| {
33 *sum_lengths
.lock().unwrap() += x
.len()
36 assert_eq
!(*sum_lengths
.lock().unwrap(), (x
.len() - 3) * 4);
40 let mut elements
= [0; 20];
42 // iterators over references into this stack frame
43 par_for(elements
.iter_mut().enumerate(), |(i
, x
)| {