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