Path: blob/main/crates/polars-arrow/src/legacy/array/default_arrays.rs
8421 views
use polars_buffer::Buffer;12use crate::array::{BinaryArray, BooleanArray, PrimitiveArray, Utf8Array};3use crate::bitmap::Bitmap;4use crate::datatypes::ArrowDataType;5use crate::offset::OffsetsBuffer;6use crate::types::NativeType;78pub trait FromData<T> {9fn from_data_default(values: T, validity: Option<Bitmap>) -> Self;10}1112impl FromData<Bitmap> for BooleanArray {13fn from_data_default(values: Bitmap, validity: Option<Bitmap>) -> BooleanArray {14BooleanArray::new(ArrowDataType::Boolean, values, validity)15}16}1718impl<T: NativeType> FromData<Buffer<T>> for PrimitiveArray<T> {19fn from_data_default(values: Buffer<T>, validity: Option<Bitmap>) -> Self {20let dt = T::PRIMITIVE;21PrimitiveArray::new(dt.into(), values, validity)22}23}2425pub trait FromDataUtf8 {26/// # Safety27/// `values` buffer must contain valid utf8 between every `offset`28unsafe fn from_data_unchecked_default(29offsets: Buffer<i64>,30values: Buffer<u8>,31validity: Option<Bitmap>,32) -> Self;33}3435impl FromDataUtf8 for Utf8Array<i64> {36unsafe fn from_data_unchecked_default(37offsets: Buffer<i64>,38values: Buffer<u8>,39validity: Option<Bitmap>,40) -> Self {41let offsets = OffsetsBuffer::new_unchecked(offsets);42Utf8Array::new_unchecked(ArrowDataType::LargeUtf8, offsets, values, validity)43}44}4546pub trait FromDataBinary {47/// # Safety48/// `values` buffer must contain valid utf8 between every `offset`49unsafe fn from_data_unchecked_default(50offsets: Buffer<i64>,51values: Buffer<u8>,52validity: Option<Bitmap>,53) -> Self;54}5556impl FromDataBinary for BinaryArray<i64> {57unsafe fn from_data_unchecked_default(58offsets: Buffer<i64>,59values: Buffer<u8>,60validity: Option<Bitmap>,61) -> Self {62let offsets = OffsetsBuffer::new_unchecked(offsets);63BinaryArray::new(ArrowDataType::LargeBinary, offsets, values, validity)64}65}666768