MCPcopy Create free account
hub / github.com/apache/arrow-rs / make_builder

Function make_builder

arrow-array/src/builder/mod.rs:448–631  ·  view source on GitHub ↗

Returns a builder with capacity for `capacity` elements of datatype `DataType`. This function is useful to construct arrays from an arbitrary vectors with known/expected schema. See comments on [StructBuilder] for retrieving collection builders built by make_builder.

(datatype: &DataType, capacity: usize)

Source from the content-addressed store, hash-verified

446/// See comments on [StructBuilder] for retrieving collection builders built by
447/// make_builder.
448pub fn make_builder(datatype: &DataType, capacity: usize) -> Box<dyn ArrayBuilder> {
449 use crate::builder::*;
450 match datatype {
451 DataType::Null => Box::new(NullBuilder::new()),
452 DataType::Boolean => Box::new(BooleanBuilder::with_capacity(capacity)),
453 DataType::Int8 => Box::new(Int8Builder::with_capacity(capacity)),
454 DataType::Int16 => Box::new(Int16Builder::with_capacity(capacity)),
455 DataType::Int32 => Box::new(Int32Builder::with_capacity(capacity)),
456 DataType::Int64 => Box::new(Int64Builder::with_capacity(capacity)),
457 DataType::UInt8 => Box::new(UInt8Builder::with_capacity(capacity)),
458 DataType::UInt16 => Box::new(UInt16Builder::with_capacity(capacity)),
459 DataType::UInt32 => Box::new(UInt32Builder::with_capacity(capacity)),
460 DataType::UInt64 => Box::new(UInt64Builder::with_capacity(capacity)),
461 DataType::Float16 => Box::new(Float16Builder::with_capacity(capacity)),
462 DataType::Float32 => Box::new(Float32Builder::with_capacity(capacity)),
463 DataType::Float64 => Box::new(Float64Builder::with_capacity(capacity)),
464 DataType::Binary => Box::new(BinaryBuilder::with_capacity(capacity, 1024)),
465 DataType::LargeBinary => Box::new(LargeBinaryBuilder::with_capacity(capacity, 1024)),
466 DataType::BinaryView => Box::new(BinaryViewBuilder::with_capacity(capacity)),
467 DataType::FixedSizeBinary(len) => {
468 Box::new(FixedSizeBinaryBuilder::with_capacity(capacity, *len))
469 }
470 DataType::Decimal32(p, s) => Box::new(
471 Decimal32Builder::with_capacity(capacity).with_data_type(DataType::Decimal32(*p, *s)),
472 ),
473 DataType::Decimal64(p, s) => Box::new(
474 Decimal64Builder::with_capacity(capacity).with_data_type(DataType::Decimal64(*p, *s)),
475 ),
476 DataType::Decimal128(p, s) => Box::new(
477 Decimal128Builder::with_capacity(capacity).with_data_type(DataType::Decimal128(*p, *s)),
478 ),
479 DataType::Decimal256(p, s) => Box::new(
480 Decimal256Builder::with_capacity(capacity).with_data_type(DataType::Decimal256(*p, *s)),
481 ),
482 DataType::Utf8 => Box::new(StringBuilder::with_capacity(capacity, 1024)),
483 DataType::LargeUtf8 => Box::new(LargeStringBuilder::with_capacity(capacity, 1024)),
484 DataType::Utf8View => Box::new(StringViewBuilder::with_capacity(capacity)),
485 DataType::Date32 => Box::new(Date32Builder::with_capacity(capacity)),
486 DataType::Date64 => Box::new(Date64Builder::with_capacity(capacity)),
487 DataType::Time32(TimeUnit::Second) => {
488 Box::new(Time32SecondBuilder::with_capacity(capacity))
489 }
490 DataType::Time32(TimeUnit::Millisecond) => {
491 Box::new(Time32MillisecondBuilder::with_capacity(capacity))
492 }
493 DataType::Time64(TimeUnit::Microsecond) => {
494 Box::new(Time64MicrosecondBuilder::with_capacity(capacity))
495 }
496 DataType::Time64(TimeUnit::Nanosecond) => {
497 Box::new(Time64NanosecondBuilder::with_capacity(capacity))
498 }
499 DataType::Timestamp(TimeUnit::Second, tz) => Box::new(
500 TimestampSecondBuilder::with_capacity(capacity)
501 .with_data_type(DataType::Timestamp(TimeUnit::Second, tz.clone())),
502 ),
503 DataType::Timestamp(TimeUnit::Millisecond, tz) => Box::new(
504 TimestampMillisecondBuilder::with_capacity(capacity)
505 .with_data_type(DataType::Timestamp(TimeUnit::Millisecond, tz.clone())),

Calls 8

TimestampClass · 0.85
with_values_fieldMethod · 0.80
with_keys_fieldMethod · 0.80
with_data_typeMethod · 0.45
cloneMethod · 0.45
data_typeMethod · 0.45
with_fieldMethod · 0.45
nameMethod · 0.45