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

Method into_primitive_dict_builder

arrow-array/src/array/dictionary_array.rs:492–523  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

490 /// its keys and values if the underlying data buffer is not shared by others.
491 #[allow(clippy::result_large_err)]
492 pub fn into_primitive_dict_builder<V>(self) -> Result<PrimitiveDictionaryBuilder<K, V>, Self>
493 where
494 V: ArrowPrimitiveType,
495 {
496 if !self.value_type().is_primitive() {
497 return Err(self);
498 }
499
500 let key_array = self.keys().clone();
501 let value_array = self.values().as_primitive::<V>().clone();
502
503 drop(self.keys);
504 drop(self.values);
505
506 let key_builder = key_array.into_builder();
507 let value_builder = value_array.into_builder();
508
509 match (key_builder, value_builder) {
510 (Ok(key_builder), Ok(value_builder)) => Ok(unsafe {
511 PrimitiveDictionaryBuilder::new_from_builders(key_builder, value_builder)
512 }),
513 (Err(key_array), Ok(mut value_builder)) => {
514 Err(Self::try_new(key_array, Arc::new(value_builder.finish())).unwrap())
515 }
516 (Ok(mut key_builder), Err(value_array)) => {
517 Err(Self::try_new(key_builder.finish(), Arc::new(value_array)).unwrap())
518 }
519 (Err(key_array), Err(value_array)) => {
520 Err(Self::try_new(key_array, Arc::new(value_array)).unwrap())
521 }
522 }
523 }
524
525 /// Applies an unary and infallible function to a mutable dictionary array.
526 /// Mutable dictionary array means that the buffers are not shared with other arrays.

Callers 1

unary_mutMethod · 0.80

Calls 8

try_newFunction · 0.85
is_primitiveMethod · 0.45
value_typeMethod · 0.45
cloneMethod · 0.45
keysMethod · 0.45
valuesMethod · 0.45
into_builderMethod · 0.45
finishMethod · 0.45

Tested by

no test coverage detected