arrow_rayon/parallel_array/
parallel_interval_array.rs1use arrow_array::types::{IntervalDayTimeType, IntervalMonthDayNanoType, IntervalYearMonthType};
2use arrow_array::{IntervalDayTimeArray, IntervalMonthDayNanoArray, IntervalYearMonthArray};
3use arrow_buffer::{IntervalDayTime, IntervalMonthDayNano};
4use rayon::iter::ParallelIterator;
5
6use crate::parallel_primitive_array::{ParallelPrimitiveArray, ParallelPrimitiveArrayRef};
7
8pub type ParallelIntervalYearMonthArray = ParallelPrimitiveArray<IntervalYearMonthType>;
9pub type ParallelIntervalYearMonthArrayRef<'data> =
10 ParallelPrimitiveArrayRef<'data, IntervalYearMonthType>;
11pub type ParallelIntervalDayTimeArray = ParallelPrimitiveArray<IntervalDayTimeType>;
12pub type ParallelIntervalDayTimeArrayRef<'data> =
13 ParallelPrimitiveArrayRef<'data, IntervalDayTimeType>;
14pub type ParallelIntervalMonthDayNanoArray = ParallelPrimitiveArray<IntervalMonthDayNanoType>;
15pub type ParallelIntervalMonthDayNanoArrayRef<'data> =
16 ParallelPrimitiveArrayRef<'data, IntervalMonthDayNanoType>;
17
18pub trait IntervalYearMonthArrayRefParallelIterator<'data> {
19 type Iter: ParallelIterator<Item = Option<i32>>;
20
21 fn par_iter(&'data self) -> Self::Iter;
22}
23
24impl<'data> IntervalYearMonthArrayRefParallelIterator<'data> for IntervalYearMonthArray {
25 type Iter = ParallelIntervalYearMonthArrayRef<'data>;
26
27 fn par_iter(&'data self) -> Self::Iter {
28 ParallelIntervalYearMonthArrayRef::new(self)
29 }
30}
31
32pub trait IntervalDayTimeArrayRefParallelIterator<'data> {
33 type Iter: ParallelIterator<Item = Option<IntervalDayTime>>;
34
35 fn par_iter(&'data self) -> Self::Iter;
36}
37
38impl<'data> IntervalDayTimeArrayRefParallelIterator<'data> for IntervalDayTimeArray {
39 type Iter = ParallelIntervalDayTimeArrayRef<'data>;
40
41 fn par_iter(&'data self) -> Self::Iter {
42 ParallelIntervalDayTimeArrayRef::new(self)
43 }
44}
45
46pub trait IntervalMonthDayNanoArrayRefParallelIterator<'data> {
47 type Iter: ParallelIterator<Item = Option<IntervalMonthDayNano>>;
48
49 fn par_iter(&'data self) -> Self::Iter;
50}
51
52impl<'data> IntervalMonthDayNanoArrayRefParallelIterator<'data> for IntervalMonthDayNanoArray {
53 type Iter = ParallelIntervalMonthDayNanoArrayRef<'data>;
54
55 fn par_iter(&'data self) -> Self::Iter {
56 ParallelIntervalMonthDayNanoArrayRef::new(self)
57 }
58}