arrow_rayon/parallel_array/
parallel_float_array.rs1use arrow_array::types::{Float16Type, Float32Type, Float64Type};
2use arrow_array::{Float16Array, Float32Array, Float64Array};
3use half::f16;
4use rayon::iter::ParallelIterator;
5
6use crate::parallel_primitive_array::{ParallelPrimitiveArray, ParallelPrimitiveArrayRef};
7
8pub type ParallelFloat16Array = ParallelPrimitiveArray<Float16Type>;
9pub type ParallelFloat16ArrayRef<'data> = ParallelPrimitiveArrayRef<'data, Float16Type>;
10pub type ParallelFloat32Array = ParallelPrimitiveArray<Float32Type>;
11pub type ParallelFloat32ArrayRef<'data> = ParallelPrimitiveArrayRef<'data, Float32Type>;
12pub type ParallelFloat64Array = ParallelPrimitiveArray<Float64Type>;
13pub type ParallelFloat64ArrayRef<'data> = ParallelPrimitiveArrayRef<'data, Float64Type>;
14
15pub trait Float16ArrayRefParallelIterator<'data> {
16 type Iter: ParallelIterator<Item = Option<f16>>;
17
18 fn par_iter(&'data self) -> Self::Iter;
19}
20
21impl<'data> Float16ArrayRefParallelIterator<'data> for Float16Array {
22 type Iter = ParallelFloat16ArrayRef<'data>;
23
24 fn par_iter(&'data self) -> Self::Iter {
25 ParallelFloat16ArrayRef::new(self)
26 }
27}
28
29pub trait Float32ArrayRefParallelIterator<'data> {
30 type Iter: ParallelIterator<Item = Option<f32>>;
31
32 fn par_iter(&'data self) -> Self::Iter;
33}
34
35impl<'data> Float32ArrayRefParallelIterator<'data> for Float32Array {
36 type Iter = ParallelFloat32ArrayRef<'data>;
37
38 fn par_iter(&'data self) -> Self::Iter {
39 ParallelFloat32ArrayRef::new(self)
40 }
41}
42
43pub trait Float64ArrayRefParallelIterator<'data> {
44 type Iter: ParallelIterator<Item = Option<f64>>;
45
46 fn par_iter(&'data self) -> Self::Iter;
47}
48
49impl<'data> Float64ArrayRefParallelIterator<'data> for Float64Array {
50 type Iter = ParallelFloat64ArrayRef<'data>;
51
52 fn par_iter(&'data self) -> Self::Iter {
53 ParallelFloat64ArrayRef::new(self)
54 }
55}