[![rayon-badge]][rayon] [![cat-concurrency-badge]][cat-concurrency]
这个例子演示了如何使用rayon::any
和rayon::all
方法,是与std::any
和std::all
相对应的并行方法。rayon::any
并行检查迭代器的任何元素,是否与断言匹配,并在找到一个元素后立即返回。rayon::all
并行检查迭代器的所有元素,是否与断言匹配,并在找到非匹配元素后,立即返回。
extern crate rayon;
use rayon::prelude::*;
fn main() {
let mut vec = vec![2, 4, 6, 8];
assert!(!vec.par_iter().any(|n| (*n % 2) != 0));
assert!(vec.par_iter().all(|n| (*n % 2) == 0));
assert!(!vec.par_iter().any(|n| *n > 8 ));
assert!(vec.par_iter().all(|n| *n <= 8 ));
vec.push(9);
assert!(vec.par_iter().any(|n| (*n % 2) != 0));
assert!(!vec.par_iter().all(|n| (*n % 2) == 0));
assert!(vec.par_iter().any(|n| *n > 8 ));
assert!(!vec.par_iter().all(|n| *n <= 8 ));
}