diff --git a/arrow-array/src/array/fixed_size_list_array.rs b/arrow-array/src/array/fixed_size_list_array.rs index f53b042f873b..5a37d7f3e9ce 100644 --- a/arrow-array/src/array/fixed_size_list_array.rs +++ b/arrow-array/src/array/fixed_size_list_array.rs @@ -429,8 +429,10 @@ impl FixedSizeListArray { impl From for FixedSizeListArray { fn from(data: ArrayData) -> Self { - let value_length = match data.data_type() { - DataType::FixedSizeList(_, len) => *len, + let (data_type, len, nulls, offset, _buffers, child_data) = data.into_parts(); + + let value_length = match data_type { + DataType::FixedSizeList(_, len) => len, data_type => { panic!( "FixedSizeListArray data should contain a FixedSizeList data type, got {data_type}" @@ -439,14 +441,13 @@ impl From for FixedSizeListArray { }; let size = value_length as usize; - let values = - make_array(data.child_data()[0].slice(data.offset() * size, data.len() * size)); + let values = make_array(child_data[0].slice(offset * size, len * size)); Self { - data_type: data.data_type().clone(), + data_type, values, - nulls: data.nulls().cloned(), + nulls, value_length, - len: data.len(), + len, } } }