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
impl ArrayDataBuilder
Sourcepub fn data_type(self, data_type: DataType) -> Self
pub fn data_type(self, data_type: DataType) -> Self
Creates a new array data builder from an existing one, changing the data type
Sourcepub fn null_count(self, null_count: usize) -> Self
pub fn null_count(self, null_count: usize) -> Self
Sets the null count of the ArrayData
Sourcepub fn null_bit_buffer(self, buf: Option<Buffer>) -> Self
pub fn null_bit_buffer(self, buf: Option<Buffer>) -> Self
Sets the null_bit_buffer
of the ArrayData
Sourcepub fn add_buffer(self, b: Buffer) -> Self
pub fn add_buffer(self, b: Buffer) -> Self
Adds a single buffer to the ArrayData’s buffers
Sourcepub fn add_buffers<I: IntoIterator<Item = Buffer>>(self, bs: I) -> Self
pub fn add_buffers<I: IntoIterator<Item = Buffer>>(self, bs: I) -> Self
Adds multiple buffers to the ArrayData’s buffers
Sourcepub fn child_data(self, v: Vec<ArrayData>) -> Self
pub fn child_data(self, v: Vec<ArrayData>) -> Self
Sets the child data of the ArrayData
Sourcepub fn add_child_data(self, r: ArrayData) -> Self
pub fn add_child_data(self, r: ArrayData) -> Self
Adds a single child data to the ArrayData’s child data
Sourcepub unsafe fn build_unchecked(self) -> ArrayData
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.
Sourcepub fn build(self) -> Result<ArrayData, ArrowError>
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.
Sourcepub fn build_aligned(self) -> Result<ArrayData, ArrowError>
👎Deprecated since 54.1.0: Use ArrayData::align_buffers instead
pub fn build_aligned(self) -> Result<ArrayData, ArrowError>
Creates an array data, validating all inputs, and aligning any buffers
Sourcepub fn align_buffers(self, align_buffers: bool) -> Self
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.
Sourcepub unsafe fn skip_validation(self, skip_validation: bool) -> Self
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