8.2.2. 并行测试集合中任意或所有的元素是否匹配给定断言
这个实例示范如何使用 rayon::any
和 rayon::all
方法,这两个方法是分别与 std::any
和 std::all
相对应的并行方法。rayon::any
并行检查迭代器的任意元素是否与断言匹配,并在找到一个匹配的元素时就返回。rayon::all
并行检查迭代器的所有元素是否与断言匹配,并在找到不匹配的元素时立即返回。
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 )); }