Path: blob/main/crates/polars-arrow/src/legacy/array/default_arrays.rs
6939 views
use crate::array::{BinaryArray, BooleanArray, PrimitiveArray, Utf8Array};1use crate::bitmap::Bitmap;2use crate::buffer::Buffer;3use crate::datatypes::ArrowDataType;4use crate::offset::OffsetsBuffer;5use crate::types::NativeType;67pub trait FromData<T> {8fn from_data_default(values: T, validity: Option<Bitmap>) -> Self;9}1011impl FromData<Bitmap> for BooleanArray {12fn from_data_default(values: Bitmap, validity: Option<Bitmap>) -> BooleanArray {13BooleanArray::new(ArrowDataType::Boolean, values, validity)14}15}1617impl<T: NativeType> FromData<Buffer<T>> for PrimitiveArray<T> {18fn from_data_default(values: Buffer<T>, validity: Option<Bitmap>) -> Self {19let dt = T::PRIMITIVE;20PrimitiveArray::new(dt.into(), values, validity)21}22}2324pub trait FromDataUtf8 {25/// # Safety26/// `values` buffer must contain valid utf8 between every `offset`27unsafe fn from_data_unchecked_default(28offsets: Buffer<i64>,29values: Buffer<u8>,30validity: Option<Bitmap>,31) -> Self;32}3334impl FromDataUtf8 for Utf8Array<i64> {35unsafe fn from_data_unchecked_default(36offsets: Buffer<i64>,37values: Buffer<u8>,38validity: Option<Bitmap>,39) -> Self {40let offsets = OffsetsBuffer::new_unchecked(offsets);41Utf8Array::new_unchecked(ArrowDataType::LargeUtf8, offsets, values, validity)42}43}4445pub trait FromDataBinary {46/// # Safety47/// `values` buffer must contain valid utf8 between every `offset`48unsafe fn from_data_unchecked_default(49offsets: Buffer<i64>,50values: Buffer<u8>,51validity: Option<Bitmap>,52) -> Self;53}5455impl FromDataBinary for BinaryArray<i64> {56unsafe fn from_data_unchecked_default(57offsets: Buffer<i64>,58values: Buffer<u8>,59validity: Option<Bitmap>,60) -> Self {61let offsets = OffsetsBuffer::new_unchecked(offsets);62BinaryArray::new(ArrowDataType::LargeBinary, offsets, values, validity)63}64}656667