Struct ArrayDataBuilder

Source
pub struct ArrayDataBuilder {
    data_type: DataType,
    len: usize,
    null_count: Option<usize>,
    null_bit_buffer: Option<Buffer>,
    nulls: Option<NullBuffer>,
    offset: usize,
    buffers: Vec<Buffer>,
    child_data: Vec<ArrayData>,
    align_buffers: bool,
    skip_validation: UnsafeFlag,
}
Expand description

Builder for ArrayData type

Fields§

§data_type: DataType§len: usize§null_count: Option<usize>§null_bit_buffer: Option<Buffer>§nulls: Option<NullBuffer>§offset: usize§buffers: Vec<Buffer>§child_data: Vec<ArrayData>§align_buffers: bool

Should buffers be realigned (copying if necessary)?

Defaults to false.

§skip_validation: UnsafeFlag

Should data validation be skipped for this ArrayData?

Defaults to false.

§Safety

This flag can only be set to true using unsafe APIs. However, once true subsequent calls to build() may result in undefined behavior if the data is not valid.

Implementations§

Source§

impl ArrayDataBuilder

Source

pub const fn new(data_type: DataType) -> Self

Creates a new array data builder

Source

pub fn data_type(self, data_type: DataType) -> Self

Creates a new array data builder from an existing one, changing the data type

Source

pub const fn len(self, n: usize) -> Self

Sets the length of the ArrayData

Source

pub fn nulls(self, nulls: Option<NullBuffer>) -> Self

Sets the null buffer of the ArrayData

Source

pub fn null_count(self, null_count: usize) -> Self

Sets the null count of the ArrayData

Source

pub fn null_bit_buffer(self, buf: Option<Buffer>) -> Self

Sets the null_bit_buffer of the ArrayData

Source

pub const fn offset(self, n: usize) -> Self

Sets the offset of the ArrayData

Source

pub fn buffers(self, v: Vec<Buffer>) -> Self

Sets the buffers of the ArrayData

Source

pub fn add_buffer(self, b: Buffer) -> Self

Adds a single buffer to the ArrayData’s buffers

Source

pub fn add_buffers<I: IntoIterator<Item = Buffer>>(self, bs: I) -> Self

Adds multiple buffers to the ArrayData’s buffers

Source

pub fn child_data(self, v: Vec<ArrayData>) -> Self

Sets the child data of the ArrayData

Source

pub fn add_child_data(self, r: ArrayData) -> Self

Adds a single child data to the ArrayData’s child data

Source

pub unsafe fn build_unchecked(self) -> ArrayData

Creates an array data, without any validation

Note: This is shorthand for

builder.skip_validation(true).build().unwrap()
§Safety

The same caveats as ArrayData::new_unchecked apply.

Source

pub fn build(self) -> Result<ArrayData, ArrowError>

Creates an ArrayData, consuming self

§Safety

By default the underlying buffers are checked to ensure they are valid Arrow data. However, if the Self::skip_validation flag has been set to true (by the unsafe API) this validation is skipped. If the data is not valid, undefined behavior will result.

Source

pub fn build_aligned(self) -> Result<ArrayData, ArrowError>

👎Deprecated since 54.1.0: Use ArrayData::align_buffers instead

Creates an array data, validating all inputs, and aligning any buffers

Source

pub fn align_buffers(self, align_buffers: bool) -> Self

Ensure that all buffers are aligned, copying data if necessary

Rust requires that arrays are aligned to their corresponding primitive, see Layout::array and std::mem::align_of.

ArrayData therefore requires that all buffers have at least this alignment, to allow for slice based APIs. See BufferSpec::FixedWidth.

As this alignment is architecture specific, and not guaranteed by all arrow implementations, this flag is provided to automatically copy buffers to a new correctly aligned allocation when necessary, making it useful when interacting with buffers produced by other systems, e.g. IPC or FFI.

If this flag is not enabled, [Self::build] return an error on encountering insufficiently aligned buffers.

Source

pub unsafe fn skip_validation(self, skip_validation: bool) -> Self

Skips validation of the data.

If this flag is enabled, [Self::build] will skip validation of the data

If this flag is not enabled, [Self::build] will validate that all buffers are valid and will return an error if any data is invalid. Validation can be expensive.

§Safety

If validation is skipped, the buffers must form a valid Arrow array, otherwise undefined behavior will result

Trait Implementations§

Source§

impl Debug for ArrayDataBuilder

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<ArrayData> for ArrayDataBuilder

Source§

fn from(d: ArrayData) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,