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

Method from

arrow-array/src/array/dictionary_array.rs:588–627  ·  view source on GitHub ↗
(data: ArrayData)

Source from the content-addressed store, hash-verified

586/// Constructs a `DictionaryArray` from an `ArrayData`
587impl<T: ArrowDictionaryKeyType> From<ArrayData> for DictionaryArray<T> {
588 fn from(data: ArrayData) -> Self {
589 let (data_type, len, nulls, offset, mut buffers, mut child_data) = data.into_parts();
590
591 assert_eq!(
592 buffers.len(),
593 1,
594 "DictionaryArray data should contain a single buffer only (keys)."
595 );
596 let buffer = buffers.pop().expect("checked above");
597 assert_eq!(
598 child_data.len(),
599 1,
600 "DictionaryArray should contain a single child array (values)."
601 );
602 let cd = child_data.pop().expect("checked above");
603
604 if let DataType::Dictionary(key_data_type, _) = &data_type {
605 assert_eq!(
606 &T::DATA_TYPE,
607 key_data_type.as_ref(),
608 "DictionaryArray's data type must match, expected {} got {}",
609 T::DATA_TYPE,
610 key_data_type
611 );
612
613 let values = make_array(cd);
614
615 // create a zero-copy of the keys' data
616 let keys = PrimitiveArray::<T>::new(ScalarBuffer::new(buffer, offset, len), nulls);
617
618 Self {
619 data_type,
620 keys,
621 values,
622 is_ordered: false,
623 }
624 } else {
625 panic!("DictionaryArray must have Dictionary data type.")
626 }
627 }
628}
629
630impl<T: ArrowDictionaryKeyType> From<DictionaryArray<T>> for ArrayData {

Callers

nothing calls this directly

Calls 7

child_dataMethod · 0.80
make_arrayFunction · 0.70
into_partsMethod · 0.45
data_typeMethod · 0.45
into_builderMethod · 0.45
into_dataMethod · 0.45
build_uncheckedMethod · 0.45

Tested by

no test coverage detected