Trait ArrayBuilder
pub trait ArrayBuilder:
Any
+ Send
+ Sync {
// Required methods
fn len(&self) -> usize;
fn finish(&mut self) -> Arc<dyn Array>;
fn finish_cloned(&self) -> Arc<dyn Array>;
fn as_any(&self) -> &(dyn Any + 'static);
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static);
fn into_box_any(self: Box<Self>) -> Box<dyn Any>;
// Provided methods
fn is_empty(&self) -> bool { ... }
fn finish_preserve_values(&mut self) -> Arc<dyn Array> { ... }
}Expand description
Trait for dealing with different array builders at runtime
ยงExample
// Create
let mut data_builders: Vec<Box<dyn ArrayBuilder>> = vec![
Box::new(Float64Builder::new()),
Box::new(Int64Builder::new()),
Box::new(StringBuilder::new()),
];
// Fill
data_builders[0]
.as_any_mut()
.downcast_mut::<Float64Builder>()
.unwrap()
.append_value(3.14);
data_builders[1]
.as_any_mut()
.downcast_mut::<Int64Builder>()
.unwrap()
.append_value(-1);
data_builders[2]
.as_any_mut()
.downcast_mut::<StringBuilder>()
.unwrap()
.append_value("๐");
// Finish
let array_refs: Vec<ArrayRef> = data_builders
.iter_mut()
.map(|builder| builder.finish())
.collect();
assert_eq!(array_refs[0].len(), 1);
assert_eq!(array_refs[1].is_null(0), false);
assert_eq!(
array_refs[2]
.as_any()
.downcast_ref::<StringArray>()
.unwrap()
.value(0),
"๐"
);Required Methodsยง
fn finish_cloned(&self) -> Arc<dyn Array>
fn finish_cloned(&self) -> Arc<dyn Array>
Builds the array without resetting the underlying builder.
fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Returns the builder as a non-mutable Any reference.
This is most useful when one wants to call non-mutable APIs on a specific builder
type. In this case, one can first cast this into a Any, and then use
downcast_ref to get a reference on the specific builder.
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.
This is most useful when one wants to call mutable APIs on a specific builder
type. In this case, one can first cast this into a Any, and then use
downcast_mut to get a reference on the specific builder.
fn into_box_any(self: Box<Self>) -> Box<dyn Any>
fn into_box_any(self: Box<Self>) -> Box<dyn Any>
Returns the boxed builder as a box of Any.
Provided Methodsยง
fn finish_preserve_values(&mut self) -> Arc<dyn Array>
fn finish_preserve_values(&mut self) -> Arc<dyn Array>
Builds the array without resetting the values builder.
This is relevant for dictionary builders but also for composite builders. Those are not affected directly, but will call the corresponding method on their constituent builders.
The default implementation just calls finish which is sufficient
for all but the above mentioned builders.
Trait Implementationsยง
ยงimpl ArrayBuilder for Box<dyn ArrayBuilder>
impl ArrayBuilder for Box<dyn ArrayBuilder>
ยงfn finish_cloned(&self) -> Arc<dyn Array>
fn finish_cloned(&self) -> Arc<dyn Array>
ยงfn finish_preserve_values(&mut self) -> Arc<dyn Array>
fn finish_preserve_values(&mut self) -> Arc<dyn Array>
ยงfn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Any reference. Read moreยงfn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Any reference. Read moreยงfn into_box_any(self: Box<Box<dyn ArrayBuilder>>) -> Box<dyn Any>
fn into_box_any(self: Box<Box<dyn ArrayBuilder>>) -> Box<dyn Any>
Any.