arrow_rayon/parallel_array/
parallel_interval_array.rs

1use 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}