Struct VariantArrayBuilder
pub struct VariantArrayBuilder {
nulls: NullBufferBuilder,
metadata_builder: WritableMetadataBuilder,
metadata_offsets: Vec<usize>,
value_builder: ValueBuilder,
value_offsets: Vec<usize>,
fields: Fields,
}
Expand description
A builder for VariantArray
This builder is used to construct a VariantArray
and allows APIs for
adding metadata
This builder always creates a VariantArray
using [BinaryViewArray
] for both
the metadata and value fields.
§TODO
- Support shredding: https://github.com/apache/arrow-rs/issues/7895
§Example:
// Create a new VariantArrayBuilder with a capacity of 100 rows
let mut builder = VariantArrayBuilder::new(100);
// append variant values
builder.append_variant(Variant::from(42));
// append a null row (note not a Variant::Null)
builder.append_null();
// append an object to the builder using VariantBuilderExt methods directly
builder.new_object()
.with_field("foo", "bar")
.finish();
// create the final VariantArray
let variant_array = builder.build();
assert_eq!(variant_array.len(), 3);
// // Access the values
// row 1 is not null and is an integer
assert!(!variant_array.is_null(0));
assert_eq!(variant_array.value(0), Variant::from(42i32));
// row 1 is null
assert!(variant_array.is_null(1));
// row 2 is not null and is an object
assert!(!variant_array.is_null(2));
let value = variant_array.value(2);
let obj = value.as_object().expect("expected object");
assert_eq!(obj.get("foo"), Some(Variant::from("bar")));
Fields§
§nulls: NullBufferBuilder
§metadata_builder: WritableMetadataBuilder
§metadata_offsets: Vec<usize>
§value_builder: ValueBuilder
§value_offsets: Vec<usize>
§fields: Fields
Implementations§
§impl VariantArrayBuilder
impl VariantArrayBuilder
pub fn new(row_capacity: usize) -> VariantArrayBuilder
pub fn build(self) -> VariantArray
pub fn build(self) -> VariantArray
Build the final builder
pub fn append_null(&mut self)
pub fn append_null(&mut self)
Appends a null row to the builder.
pub fn append_variant(&mut self, variant: Variant<'_, '_>)
pub fn append_variant(&mut self, variant: Variant<'_, '_>)
Append the Variant
to the builder as the next row
Trait Implementations§
§impl Debug for VariantArrayBuilder
impl Debug for VariantArrayBuilder
§impl VariantBuilderExt for VariantArrayBuilder
impl VariantBuilderExt for VariantArrayBuilder
§fn append_null(&mut self)
fn append_null(&mut self)
Appending NULL to a variant array produces an actual NULL value
§type State<'a> = ArrayBuilderState<'a>
where
VariantArrayBuilder: 'a
type State<'a> = ArrayBuilderState<'a> where VariantArrayBuilder: 'a
The builder specific state used by nested builders
§fn append_value<'m, 'v>(&mut self, value: impl Into<Variant<'m, 'v>>)
fn append_value<'m, 'v>(&mut self, value: impl Into<Variant<'m, 'v>>)
Appends a new variant value to this builder. See e.g.
VariantBuilder::append_value
.§fn try_new_list(
&mut self,
) -> Result<ListBuilder<'_, <VariantArrayBuilder as VariantBuilderExt>::State<'_>>, ArrowError>
fn try_new_list( &mut self, ) -> Result<ListBuilder<'_, <VariantArrayBuilder as VariantBuilderExt>::State<'_>>, ArrowError>
Creates a nested list builder. See e.g.
VariantBuilder::new_list
. Returns an error if
the nested builder cannot be created, see e.g. ObjectBuilder::try_new_list
.§fn try_new_object(
&mut self,
) -> Result<ObjectBuilder<'_, <VariantArrayBuilder as VariantBuilderExt>::State<'_>>, ArrowError>
fn try_new_object( &mut self, ) -> Result<ObjectBuilder<'_, <VariantArrayBuilder as VariantBuilderExt>::State<'_>>, ArrowError>
Creates a nested object builder. See e.g.
VariantBuilder::new_object
. Returns an error
if the nested builder cannot be created, see e.g. ObjectBuilder::try_new_object
.§fn new_list(&mut self) -> ListBuilder<'_, Self::State<'_>>
fn new_list(&mut self) -> ListBuilder<'_, Self::State<'_>>
Creates a nested list builder. See e.g.
VariantBuilder::new_list
. Panics if the nested
builder cannot be created, see e.g. ObjectBuilder::new_list
.§fn new_object(&mut self) -> ObjectBuilder<'_, Self::State<'_>>
fn new_object(&mut self) -> ObjectBuilder<'_, Self::State<'_>>
Creates a nested object builder. See e.g.
VariantBuilder::new_object
. Panics if the
nested builder cannot be created, see e.g. ObjectBuilder::new_object
.Auto Trait Implementations§
impl !Freeze for VariantArrayBuilder
impl RefUnwindSafe for VariantArrayBuilder
impl Send for VariantArrayBuilder
impl Sync for VariantArrayBuilder
impl Unpin for VariantArrayBuilder
impl UnwindSafe for VariantArrayBuilder
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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 more§impl<T> JsonToVariant for Twhere
T: VariantBuilderExt,
impl<T> JsonToVariant for Twhere
T: VariantBuilderExt,
§fn append_json(&mut self, json: &str) -> Result<(), ArrowError>
fn append_json(&mut self, json: &str) -> Result<(), ArrowError>
Create a Variant from a JSON string