arrow_rayon/parallel_array/
parallel_date_array.rs

1use arrow_array::types::{Date32Type, Date64Type};
2use arrow_array::{Date32Array, Date64Array};
3use rayon::iter::ParallelIterator;
4
5use crate::parallel_primitive_array::{ParallelPrimitiveArray, ParallelPrimitiveArrayRef};
6
7pub type ParallelDate32Array = ParallelPrimitiveArray<Date32Type>;
8pub type ParallelDate32ArrayRef<'data> = ParallelPrimitiveArrayRef<'data, Date32Type>;
9pub type ParallelDate64Array = ParallelPrimitiveArray<Date64Type>;
10pub type ParallelDate64ArrayRef<'data> = ParallelPrimitiveArrayRef<'data, Date64Type>;
11
12pub trait Date32ArrayRefParallelIterator<'data> {
13    type Iter: ParallelIterator<Item = Option<i32>>;
14
15    fn par_iter(&'data self) -> Self::Iter;
16}
17
18impl<'data> Date32ArrayRefParallelIterator<'data> for Date32Array {
19    type Iter = ParallelDate32ArrayRef<'data>;
20
21    fn par_iter(&'data self) -> Self::Iter {
22        ParallelDate32ArrayRef::new(self)
23    }
24}
25
26pub trait Date64ArrayRefParallelIterator<'data> {
27    type Iter: ParallelIterator<Item = Option<i64>>;
28
29    fn par_iter(&'data self) -> Self::Iter;
30}
31
32impl<'data> Date64ArrayRefParallelIterator<'data> for Date64Array {
33    type Iter = ParallelDate64ArrayRef<'data>;
34
35    fn par_iter(&'data self) -> Self::Iter {
36        ParallelDate64ArrayRef::new(self)
37    }
38}