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