1use crate::{downcast_value, Result};
24use arrow::array::{
25 BinaryViewArray, Float16Array, Int16Array, Int8Array, LargeBinaryArray,
26 LargeStringArray, StringViewArray, UInt16Array,
27};
28use arrow::{
29 array::{
30 Array, BinaryArray, BooleanArray, Date32Array, Date64Array, Decimal128Array,
31 Decimal256Array, DictionaryArray, FixedSizeBinaryArray, FixedSizeListArray,
32 Float32Array, Float64Array, GenericBinaryArray, GenericListArray,
33 GenericStringArray, Int32Array, Int64Array, IntervalDayTimeArray,
34 IntervalMonthDayNanoArray, IntervalYearMonthArray, LargeListArray, ListArray,
35 MapArray, NullArray, OffsetSizeTrait, PrimitiveArray, StringArray, StructArray,
36 Time32MillisecondArray, Time32SecondArray, Time64MicrosecondArray,
37 Time64NanosecondArray, TimestampMicrosecondArray, TimestampMillisecondArray,
38 TimestampNanosecondArray, TimestampSecondArray, UInt32Array, UInt64Array,
39 UInt8Array, UnionArray,
40 },
41 datatypes::{ArrowDictionaryKeyType, ArrowPrimitiveType},
42};
43
44pub fn as_date32_array(array: &dyn Array) -> Result<&Date32Array> {
46 Ok(downcast_value!(array, Date32Array))
47}
48
49pub fn as_date64_array(array: &dyn Array) -> Result<&Date64Array> {
51 Ok(downcast_value!(array, Date64Array))
52}
53
54pub fn as_struct_array(array: &dyn Array) -> Result<&StructArray> {
56 Ok(downcast_value!(array, StructArray))
57}
58
59pub fn as_int8_array(array: &dyn Array) -> Result<&Int8Array> {
61 Ok(downcast_value!(array, Int8Array))
62}
63
64pub fn as_uint8_array(array: &dyn Array) -> Result<&UInt8Array> {
66 Ok(downcast_value!(array, UInt8Array))
67}
68
69pub fn as_int16_array(array: &dyn Array) -> Result<&Int16Array> {
71 Ok(downcast_value!(array, Int16Array))
72}
73
74pub fn as_uint16_array(array: &dyn Array) -> Result<&UInt16Array> {
76 Ok(downcast_value!(array, UInt16Array))
77}
78
79pub fn as_int32_array(array: &dyn Array) -> Result<&Int32Array> {
81 Ok(downcast_value!(array, Int32Array))
82}
83
84pub fn as_uint32_array(array: &dyn Array) -> Result<&UInt32Array> {
86 Ok(downcast_value!(array, UInt32Array))
87}
88
89pub fn as_int64_array(array: &dyn Array) -> Result<&Int64Array> {
91 Ok(downcast_value!(array, Int64Array))
92}
93
94pub fn as_uint64_array(array: &dyn Array) -> Result<&UInt64Array> {
96 Ok(downcast_value!(array, UInt64Array))
97}
98
99pub fn as_decimal128_array(array: &dyn Array) -> Result<&Decimal128Array> {
101 Ok(downcast_value!(array, Decimal128Array))
102}
103
104pub fn as_decimal256_array(array: &dyn Array) -> Result<&Decimal256Array> {
106 Ok(downcast_value!(array, Decimal256Array))
107}
108
109pub fn as_float16_array(array: &dyn Array) -> Result<&Float16Array> {
111 Ok(downcast_value!(array, Float16Array))
112}
113
114pub fn as_float32_array(array: &dyn Array) -> Result<&Float32Array> {
116 Ok(downcast_value!(array, Float32Array))
117}
118
119pub fn as_float64_array(array: &dyn Array) -> Result<&Float64Array> {
121 Ok(downcast_value!(array, Float64Array))
122}
123
124pub fn as_string_array(array: &dyn Array) -> Result<&StringArray> {
126 Ok(downcast_value!(array, StringArray))
127}
128
129pub fn as_string_view_array(array: &dyn Array) -> Result<&StringViewArray> {
131 Ok(downcast_value!(array, StringViewArray))
132}
133
134pub fn as_large_string_array(array: &dyn Array) -> Result<&LargeStringArray> {
136 Ok(downcast_value!(array, LargeStringArray))
137}
138
139pub fn as_boolean_array(array: &dyn Array) -> Result<&BooleanArray> {
141 Ok(downcast_value!(array, BooleanArray))
142}
143
144pub fn as_list_array(array: &dyn Array) -> Result<&ListArray> {
146 Ok(downcast_value!(array, ListArray))
147}
148
149pub fn as_dictionary_array<T: ArrowDictionaryKeyType>(
151 array: &dyn Array,
152) -> Result<&DictionaryArray<T>> {
153 Ok(downcast_value!(array, DictionaryArray, T))
154}
155
156pub fn as_generic_binary_array<T: OffsetSizeTrait>(
158 array: &dyn Array,
159) -> Result<&GenericBinaryArray<T>> {
160 Ok(downcast_value!(array, GenericBinaryArray, T))
161}
162
163pub fn as_generic_list_array<T: OffsetSizeTrait>(
165 array: &dyn Array,
166) -> Result<&GenericListArray<T>> {
167 Ok(downcast_value!(array, GenericListArray, T))
168}
169
170pub fn as_large_list_array(array: &dyn Array) -> Result<&LargeListArray> {
172 Ok(downcast_value!(array, LargeListArray))
173}
174
175pub fn as_primitive_array<T: ArrowPrimitiveType>(
177 array: &dyn Array,
178) -> Result<&PrimitiveArray<T>> {
179 Ok(downcast_value!(array, PrimitiveArray, T))
180}
181
182pub fn as_map_array(array: &dyn Array) -> Result<&MapArray> {
184 Ok(downcast_value!(array, MapArray))
185}
186
187pub fn as_null_array(array: &dyn Array) -> Result<&NullArray> {
189 Ok(downcast_value!(array, NullArray))
190}
191
192pub fn as_union_array(array: &dyn Array) -> Result<&UnionArray> {
194 Ok(downcast_value!(array, UnionArray))
195}
196
197pub fn as_time32_second_array(array: &dyn Array) -> Result<&Time32SecondArray> {
199 Ok(downcast_value!(array, Time32SecondArray))
200}
201
202pub fn as_time32_millisecond_array(array: &dyn Array) -> Result<&Time32MillisecondArray> {
204 Ok(downcast_value!(array, Time32MillisecondArray))
205}
206
207pub fn as_time64_microsecond_array(array: &dyn Array) -> Result<&Time64MicrosecondArray> {
209 Ok(downcast_value!(array, Time64MicrosecondArray))
210}
211
212pub fn as_time64_nanosecond_array(array: &dyn Array) -> Result<&Time64NanosecondArray> {
214 Ok(downcast_value!(array, Time64NanosecondArray))
215}
216
217pub fn as_timestamp_nanosecond_array(
219 array: &dyn Array,
220) -> Result<&TimestampNanosecondArray> {
221 Ok(downcast_value!(array, TimestampNanosecondArray))
222}
223
224pub fn as_timestamp_millisecond_array(
226 array: &dyn Array,
227) -> Result<&TimestampMillisecondArray> {
228 Ok(downcast_value!(array, TimestampMillisecondArray))
229}
230
231pub fn as_timestamp_microsecond_array(
233 array: &dyn Array,
234) -> Result<&TimestampMicrosecondArray> {
235 Ok(downcast_value!(array, TimestampMicrosecondArray))
236}
237
238pub fn as_timestamp_second_array(array: &dyn Array) -> Result<&TimestampSecondArray> {
240 Ok(downcast_value!(array, TimestampSecondArray))
241}
242
243pub fn as_interval_ym_array(array: &dyn Array) -> Result<&IntervalYearMonthArray> {
245 Ok(downcast_value!(array, IntervalYearMonthArray))
246}
247
248pub fn as_interval_dt_array(array: &dyn Array) -> Result<&IntervalDayTimeArray> {
250 Ok(downcast_value!(array, IntervalDayTimeArray))
251}
252
253pub fn as_interval_mdn_array(array: &dyn Array) -> Result<&IntervalMonthDayNanoArray> {
255 Ok(downcast_value!(array, IntervalMonthDayNanoArray))
256}
257
258pub fn as_binary_array(array: &dyn Array) -> Result<&BinaryArray> {
260 Ok(downcast_value!(array, BinaryArray))
261}
262
263pub fn as_binary_view_array(array: &dyn Array) -> Result<&BinaryViewArray> {
265 Ok(downcast_value!(array, BinaryViewArray))
266}
267
268pub fn as_large_binary_array(array: &dyn Array) -> Result<&LargeBinaryArray> {
270 Ok(downcast_value!(array, LargeBinaryArray))
271}
272
273pub fn as_fixed_size_list_array(array: &dyn Array) -> Result<&FixedSizeListArray> {
275 Ok(downcast_value!(array, FixedSizeListArray))
276}
277
278pub fn as_fixed_size_binary_array(array: &dyn Array) -> Result<&FixedSizeBinaryArray> {
280 Ok(downcast_value!(array, FixedSizeBinaryArray))
281}
282
283pub fn as_generic_string_array<T: OffsetSizeTrait>(
285 array: &dyn Array,
286) -> Result<&GenericStringArray<T>> {
287 Ok(downcast_value!(array, GenericStringArray, T))
288}