polars_arrow/legacy/array/
default_arrays.rs1use crate::array::{BinaryArray, BooleanArray, PrimitiveArray, Utf8Array};
2use crate::bitmap::Bitmap;
3use crate::buffer::Buffer;
4use crate::datatypes::ArrowDataType;
5use crate::offset::OffsetsBuffer;
6use crate::types::NativeType;
7
8pub trait FromData<T> {
9 fn from_data_default(values: T, validity: Option<Bitmap>) -> Self;
10}
11
12impl FromData<Bitmap> for BooleanArray {
13 fn from_data_default(values: Bitmap, validity: Option<Bitmap>) -> BooleanArray {
14 BooleanArray::new(ArrowDataType::Boolean, values, validity)
15 }
16}
17
18impl<T: NativeType> FromData<Buffer<T>> for PrimitiveArray<T> {
19 fn from_data_default(values: Buffer<T>, validity: Option<Bitmap>) -> Self {
20 let dt = T::PRIMITIVE;
21 PrimitiveArray::new(dt.into(), values, validity)
22 }
23}
24
25pub trait FromDataUtf8 {
26 unsafe fn from_data_unchecked_default(
29 offsets: Buffer<i64>,
30 values: Buffer<u8>,
31 validity: Option<Bitmap>,
32 ) -> Self;
33}
34
35impl FromDataUtf8 for Utf8Array<i64> {
36 unsafe fn from_data_unchecked_default(
37 offsets: Buffer<i64>,
38 values: Buffer<u8>,
39 validity: Option<Bitmap>,
40 ) -> Self {
41 let offsets = OffsetsBuffer::new_unchecked(offsets);
42 Utf8Array::new_unchecked(ArrowDataType::LargeUtf8, offsets, values, validity)
43 }
44}
45
46pub trait FromDataBinary {
47 unsafe fn from_data_unchecked_default(
50 offsets: Buffer<i64>,
51 values: Buffer<u8>,
52 validity: Option<Bitmap>,
53 ) -> Self;
54}
55
56impl FromDataBinary for BinaryArray<i64> {
57 unsafe fn from_data_unchecked_default(
58 offsets: Buffer<i64>,
59 values: Buffer<u8>,
60 validity: Option<Bitmap>,
61 ) -> Self {
62 let offsets = OffsetsBuffer::new_unchecked(offsets);
63 BinaryArray::new(ArrowDataType::LargeBinary, offsets, values, validity)
64 }
65}