]> git.lizzy.rs Git - rust.git/blob - src/tools/miri/tests/pass/send-is-not-static-par-for.rs
Auto merge of #104915 - weihanglo:update-cargo, r=ehuss
[rust.git] / src / tools / miri / tests / pass / send-is-not-static-par-for.rs
1 use std::sync::Mutex;
2
3 fn par_for<I, F>(iter: I, f: F)
4 where
5     I: Iterator,
6     I::Item: Send,
7     F: Fn(I::Item) + Sync,
8 {
9     for item in iter {
10         f(item)
11     }
12 }
13
14 fn sum(x: &[i32]) {
15     let sum_lengths = Mutex::new(0);
16     par_for(x.windows(4), |x| *sum_lengths.lock().unwrap() += x.len());
17
18     assert_eq!(*sum_lengths.lock().unwrap(), (x.len() - 3) * 4);
19 }
20
21 fn main() {
22     let mut elements = [0; 20];
23
24     // iterators over references into this stack frame
25     par_for(elements.iter_mut().enumerate(), |(i, x)| *x = i as i32);
26
27     sum(&elements)
28 }