pub struct GenericListBuilder<OffsetSize, T>where
OffsetSize: OffsetSizeTrait,
T: ArrayBuilder,{ /* private fields */ }Expand description
Builder for GenericListArray
Use ListBuilder to build ListArrays and LargeListBuilder to build LargeListArrays.
§Example
Here is code that constructs a ListArray with the contents:
[[A,B,C], [], NULL, [D], [NULL, F]]
let values_builder = StringBuilder::new();
let mut builder = ListBuilder::new(values_builder);
// [A, B, C]
builder.values().append_value("A");
builder.values().append_value("B");
builder.values().append_value("C");
builder.append(true);
// [ ] (empty list)
builder.append(true);
// Null
builder.append(false);
// [D]
builder.values().append_value("D");
builder.append(true);
// [NULL, F]
builder.values().append_null();
builder.values().append_value("F");
builder.append(true);
// Build the array
let array = builder.finish();
// Values is a string array
// "A", "B" "C", "?", "D", NULL, "F"
assert_eq!(
array.values().as_ref(),
&StringArray::from(vec![
Some("A"), Some("B"), Some("C"),
Some("D"), None, Some("F")
])
);
// Offsets are indexes into the values array
assert_eq!(
array.value_offsets(),
&[0, 3, 3, 3, 4, 6]
);Implementations§
Source§impl<OffsetSize, T> GenericListBuilder<OffsetSize, T>where
OffsetSize: OffsetSizeTrait,
T: ArrayBuilder,
impl<OffsetSize, T> GenericListBuilder<OffsetSize, T>where
OffsetSize: OffsetSizeTrait,
T: ArrayBuilder,
Sourcepub fn new(values_builder: T) -> GenericListBuilder<OffsetSize, T>
pub fn new(values_builder: T) -> GenericListBuilder<OffsetSize, T>
Creates a new GenericListBuilder from a given values array builder
Sourcepub fn with_capacity(
values_builder: T,
capacity: usize,
) -> GenericListBuilder<OffsetSize, T>
pub fn with_capacity( values_builder: T, capacity: usize, ) -> GenericListBuilder<OffsetSize, T>
Creates a new GenericListBuilder from a given values array builder
capacity is the number of items to pre-allocate space for in this builder
Sourcepub fn with_field(
self,
field: impl Into<Arc<Field>>,
) -> GenericListBuilder<OffsetSize, T>
pub fn with_field( self, field: impl Into<Arc<Field>>, ) -> GenericListBuilder<OffsetSize, T>
Override the field passed to GenericListArray::new
By default a nullable field is created with the name item
Note: Self::finish and Self::finish_cloned will panic if the
field’s data type does not match that of T
Source§impl<OffsetSize, T> GenericListBuilder<OffsetSize, T>where
OffsetSize: OffsetSizeTrait,
T: ArrayBuilder + 'static,
impl<OffsetSize, T> GenericListBuilder<OffsetSize, T>where
OffsetSize: OffsetSizeTrait,
T: ArrayBuilder + 'static,
Sourcepub fn values(&mut self) -> &mut T
pub fn values(&mut self) -> &mut T
Returns the child array builder as a mutable reference.
This mutable reference can be used to append values into the child array builder,
but you must call append to delimit each distinct list value.
Sourcepub fn values_ref(&self) -> &T
pub fn values_ref(&self) -> &T
Returns the child array builder as an immutable reference
Sourcepub fn append(&mut self, is_valid: bool)
pub fn append(&mut self, is_valid: bool)
Finish the current variable-length list array slot
§Panics
Panics if the length of Self::values exceeds OffsetSize::MAX
Sourcepub fn append_value<I, V>(&mut self, i: I)
pub fn append_value<I, V>(&mut self, i: I)
Append a value to this GenericListBuilder
let mut builder = ListBuilder::new(Int32Builder::new());
builder.append_value([Some(1), Some(2), Some(3)]);
builder.append_value([]);
builder.append_value([None]);
let array = builder.finish();
assert_eq!(array.len(), 3);
assert_eq!(array.value_offsets(), &[0, 3, 3, 4]);
let values = array.values().as_primitive::<Int32Type>();
assert_eq!(values, &Int32Array::from(vec![Some(1), Some(2), Some(3), None]));This is an alternative API to appending directly to Self::values and
delimiting the result with Self::append
let mut builder = ListBuilder::new(Int32Builder::new());
builder.values().append_value(1);
builder.values().append_value(2);
builder.values().append_value(3);
builder.append(true);
builder.append(true);
builder.values().append_null();
builder.append(true);
let array = builder.finish();
assert_eq!(array.len(), 3);
assert_eq!(array.value_offsets(), &[0, 3, 3, 4]);
let values = array.values().as_primitive::<Int32Type>();
assert_eq!(values, &Int32Array::from(vec![Some(1), Some(2), Some(3), None]));Sourcepub fn append_null(&mut self)
pub fn append_null(&mut self)
Append a null to this GenericListBuilder
See Self::append_value for an example use.
Sourcepub fn append_nulls(&mut self, n: usize)
pub fn append_nulls(&mut self, n: usize)
Appends n nulls into the builder.
Sourcepub fn append_option<I, V>(&mut self, i: Option<I>)
pub fn append_option<I, V>(&mut self, i: Option<I>)
Appends an optional value into this GenericListBuilder
If Some calls Self::append_value otherwise calls Self::append_null
Sourcepub fn finish(&mut self) -> GenericListArray<OffsetSize>
pub fn finish(&mut self) -> GenericListArray<OffsetSize>
Builds the GenericListArray and reset this builder.
Sourcepub fn finish_cloned(&self) -> GenericListArray<OffsetSize>
pub fn finish_cloned(&self) -> GenericListArray<OffsetSize>
Builds the GenericListArray without resetting the builder.
Sourcepub fn offsets_slice(&self) -> &[OffsetSize]
pub fn offsets_slice(&self) -> &[OffsetSize]
Returns the current offsets buffer as a slice
Sourcepub fn validity_slice(&self) -> Option<&[u8]>
pub fn validity_slice(&self) -> Option<&[u8]>
Returns the current null buffer as a slice
Trait Implementations§
Source§impl<OffsetSize, T> ArrayBuilder for GenericListBuilder<OffsetSize, T>where
OffsetSize: OffsetSizeTrait,
T: ArrayBuilder + 'static,
impl<OffsetSize, T> ArrayBuilder for GenericListBuilder<OffsetSize, T>where
OffsetSize: OffsetSizeTrait,
T: ArrayBuilder + 'static,
Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Returns the builder as a mutable Any reference.
Source§fn into_box_any(self: Box<GenericListBuilder<OffsetSize, T>>) -> Box<dyn Any>
fn into_box_any(self: Box<GenericListBuilder<OffsetSize, T>>) -> Box<dyn Any>
Returns the boxed builder as a box of Any.
Source§fn finish_cloned(&self) -> Arc<dyn Array>
fn finish_cloned(&self) -> Arc<dyn Array>
Builds the array without resetting the builder.
Source§impl<OffsetSize, T> Debug for GenericListBuilder<OffsetSize, T>
impl<OffsetSize, T> Debug for GenericListBuilder<OffsetSize, T>
Source§impl<O, T> Default for GenericListBuilder<O, T>
impl<O, T> Default for GenericListBuilder<O, T>
Source§fn default() -> GenericListBuilder<O, T>
fn default() -> GenericListBuilder<O, T>
Source§impl<O, B, V, E> Extend<Option<V>> for GenericListBuilder<O, B>
impl<O, B, V, E> Extend<Option<V>> for GenericListBuilder<O, B>
Source§fn extend<T>(&mut self, iter: T)where
T: IntoIterator<Item = Option<V>>,
fn extend<T>(&mut self, iter: T)where
T: IntoIterator<Item = Option<V>>,
Source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one)Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one)Auto Trait Implementations§
impl<OffsetSize, T> Freeze for GenericListBuilder<OffsetSize, T>where
T: Freeze,
impl<OffsetSize, T> RefUnwindSafe for GenericListBuilder<OffsetSize, T>where
T: RefUnwindSafe,
OffsetSize: RefUnwindSafe,
impl<OffsetSize, T> Send for GenericListBuilder<OffsetSize, T>
impl<OffsetSize, T> Sync for GenericListBuilder<OffsetSize, T>
impl<OffsetSize, T> Unpin for GenericListBuilder<OffsetSize, T>
impl<OffsetSize, T> UnsafeUnpin for GenericListBuilder<OffsetSize, T>where
T: UnsafeUnpin,
impl<OffsetSize, T> UnwindSafe for GenericListBuilder<OffsetSize, T>where
T: UnwindSafe,
OffsetSize: UnwindSafe,
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>
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§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.Source§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.Source§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.Source§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.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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::RequestSource§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
Source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
Source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
Source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
Source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Source§impl<T> StrictAs for T
impl<T> StrictAs for T
Source§fn strict_as<Dst>(self) -> Dstwhere
T: StrictCast<Dst>,
fn strict_as<Dst>(self) -> Dstwhere
T: StrictCast<Dst>,
Source§impl<Src, Dst> StrictCastFrom<Src> for Dstwhere
Src: StrictCast<Dst>,
impl<Src, Dst> StrictCastFrom<Src> for Dstwhere
Src: StrictCast<Dst>,
Source§fn strict_cast_from(src: Src) -> Dst
fn strict_cast_from(src: Src) -> Dst
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.