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
//! Parallel query execution via [rayon](https://docs.rs/rayon).
//!
//! Enabled with the `parallel` feature flag.
//! Convert any [`crate::QueryBuilder`] to a [`ParallelQueryBuilder`] using
//! [`crate::QueryBuilder::into_parallel`].
use PhantomData;
/// 並列クエリビルダー。`rayon` を使ってデータを並列処理する。
///
/// `QueryBuilder` と同じ型ステートパターンを採用しており、
/// コンパイル時に操作の順序を検証する。
///
/// # 基本的な使い方
///
/// ```
/// use rinq::parallel::ParallelQueryBuilder;
///
/// let result: Vec<i32> = ParallelQueryBuilder::from(vec![1, 2, 3, 4, 5])
/// .par_where(|x| *x > 2)
/// .collect();
/// assert_eq!(result, vec![3, 4, 5]);
/// ```
///
/// # `QueryBuilder` からの変換
///
/// ```
/// use rinq::QueryBuilder;
///
/// let result: Vec<i32> = QueryBuilder::from(vec![1, 2, 3, 4, 5])
/// .where_(|x| *x > 0)
/// .into_parallel()
/// .par_where(|x| *x % 2 == 0)
/// .collect();
/// assert_eq!(result, vec![2, 4]);
/// ```