Skip to content

Commit 8494e6c

Browse files
committed
Avoid clones using into_parts
1 parent b94cdc1 commit 8494e6c

1 file changed

Lines changed: 4 additions & 11 deletions

File tree

arrow-array/src/array/list_view_array.rs

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -502,28 +502,21 @@ impl<OffsetSize: OffsetSizeTrait> From<GenericListArray<OffsetSize>>
502502
for GenericListViewArray<OffsetSize>
503503
{
504504
fn from(value: GenericListArray<OffsetSize>) -> Self {
505-
let field = match value.data_type() {
506-
DataType::List(f) | DataType::LargeList(f) => f.clone(),
507-
_ => panic!(
508-
"Expected infallible creation of GenericListViewArray from GenericList failed"
509-
),
510-
};
511-
512-
let offsets = value.value_offsets();
505+
let (field, offsets, values, nulls) = value.into_parts();
513506
let len = offsets.len() - 1;
514507
let mut sizes = Vec::with_capacity(len);
515508
let mut view_offsets = Vec::with_capacity(len);
516509
for (i, offset) in offsets.iter().enumerate().take(len) {
517510
view_offsets.push(*offset);
518-
sizes.push(value.value_length(i));
511+
sizes.push(offsets[i + 1] - offsets[i]);
519512
}
520513

521514
Self::new(
522515
field,
523516
ScalarBuffer::from(view_offsets),
524517
ScalarBuffer::from(sizes),
525-
value.values().clone(),
526-
value.nulls().cloned(),
518+
values,
519+
nulls,
527520
)
528521
}
529522
}

0 commit comments

Comments
 (0)