• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Check that `!Send` types fail early.
2 
3 /** ```compile_fail,E0277
4 
5 use rayon::prelude::*;
6 use std::ptr::null;
7 
8 #[derive(Copy, Clone)]
9 struct NoSend(*const ());
10 
11 unsafe impl Sync for NoSend {}
12 
13 let x = Some(NoSend(null()));
14 
15 x.par_iter()
16     .map(|&x| x) //~ ERROR
17     .count(); //~ ERROR
18 
19 ``` */
20 mod map {}
21 
22 /** ```compile_fail,E0277
23 
24 use rayon::prelude::*;
25 use std::ptr::null;
26 
27 #[derive(Copy, Clone)]
28 struct NoSend(*const ());
29 
30 unsafe impl Sync for NoSend {}
31 
32 let x = Some(NoSend(null()));
33 
34 x.par_iter()
35     .filter_map(|&x| Some(x)) //~ ERROR
36     .count(); //~ ERROR
37 
38 ``` */
39 mod filter_map {}
40 
41 /** ```compile_fail,E0277
42 
43 use rayon::prelude::*;
44 use std::ptr::null;
45 
46 #[derive(Copy, Clone)]
47 struct NoSend(*const ());
48 
49 unsafe impl Sync for NoSend {}
50 
51 let x = Some(NoSend(null()));
52 
53 x.par_iter()
54     .cloned() //~ ERROR
55     .count(); //~ ERROR
56 
57 ``` */
58 mod cloned {}
59