Struct ArrayDataBuilder
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
§skip_validation: UnsafeFlag
Implementations§
§impl ArrayDataBuilder
impl ArrayDataBuilder
pub const fn new(data_type: DataType) -> ArrayDataBuilder
pub const fn new(data_type: DataType) -> ArrayDataBuilder
Creates a new array data builder
pub fn data_type(self, data_type: DataType) -> ArrayDataBuilder
pub fn data_type(self, data_type: DataType) -> ArrayDataBuilder
Creates a new array data builder from an existing one, changing the data type
pub const fn len(self, n: usize) -> ArrayDataBuilder
pub const fn len(self, n: usize) -> ArrayDataBuilder
Sets the length of the ArrayData
pub fn nulls(self, nulls: Option<NullBuffer>) -> ArrayDataBuilder
pub fn nulls(self, nulls: Option<NullBuffer>) -> ArrayDataBuilder
Sets the null buffer of the ArrayData
pub fn null_count(self, null_count: usize) -> ArrayDataBuilder
pub fn null_count(self, null_count: usize) -> ArrayDataBuilder
Sets the null count of the ArrayData
pub fn null_bit_buffer(self, buf: Option<Buffer>) -> ArrayDataBuilder
pub fn null_bit_buffer(self, buf: Option<Buffer>) -> ArrayDataBuilder
Sets the null_bit_buffer
of the ArrayData
pub const fn offset(self, n: usize) -> ArrayDataBuilder
pub const fn offset(self, n: usize) -> ArrayDataBuilder
Sets the offset of the ArrayData
pub fn buffers(self, v: Vec<Buffer>) -> ArrayDataBuilder
pub fn buffers(self, v: Vec<Buffer>) -> ArrayDataBuilder
Sets the buffers of the ArrayData
pub fn add_buffer(self, b: Buffer) -> ArrayDataBuilder
pub fn add_buffer(self, b: Buffer) -> ArrayDataBuilder
Adds a single buffer to the ArrayData’s buffers
pub fn add_buffers<I>(self, bs: I) -> ArrayDataBuilderwhere
I: IntoIterator<Item = Buffer>,
pub fn add_buffers<I>(self, bs: I) -> ArrayDataBuilderwhere
I: IntoIterator<Item = Buffer>,
Adds multiple buffers to the ArrayData’s buffers
pub fn child_data(self, v: Vec<ArrayData>) -> ArrayDataBuilder
pub fn child_data(self, v: Vec<ArrayData>) -> ArrayDataBuilder
Sets the child data of the ArrayData
pub fn add_child_data(self, r: ArrayData) -> ArrayDataBuilder
pub fn add_child_data(self, r: ArrayData) -> ArrayDataBuilder
Adds a single child data to the ArrayData’s child data
pub 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.
pub 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.
pub 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
pub fn align_buffers(self, align_buffers: bool) -> ArrayDataBuilder
pub fn align_buffers(self, align_buffers: bool) -> ArrayDataBuilder
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.
pub unsafe fn skip_validation(self, skip_validation: bool) -> ArrayDataBuilder
pub unsafe fn skip_validation(self, skip_validation: bool) -> ArrayDataBuilder
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§
§impl Debug for ArrayDataBuilder
impl Debug for ArrayDataBuilder
§impl From<ArrayData> for ArrayDataBuilder
impl From<ArrayData> for ArrayDataBuilder
§fn from(d: ArrayData) -> ArrayDataBuilder
fn from(d: ArrayData) -> ArrayDataBuilder
Auto Trait Implementations§
impl Freeze for ArrayDataBuilder
impl RefUnwindSafe for ArrayDataBuilder
impl Send for ArrayDataBuilder
impl Sync for ArrayDataBuilder
impl Unpin for ArrayDataBuilder
impl UnwindSafe for ArrayDataBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request