Skip to content

Latest commit

 

History

History
35 lines (23 loc) · 1.36 KB

rayon-any-all.zh.md

File metadata and controls

35 lines (23 loc) · 1.36 KB

并行测试,集合的任何或所有元素是否与给定断言匹配

[![rayon-badge]][rayon] [![cat-concurrency-badge]][cat-concurrency]

这个例子演示了如何使用rayon::anyrayon::all方法,是与std::anystd::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 )); 
}