use crate::ArrayData;
use arrow_schema::DataType;
use super::{_MutableArrayData, Extend};
pub(super) fn build_extend(array: &ArrayData) -> Extend<'_> {
let size = match array.data_type() {
DataType::FixedSizeList(_, i) => *i as usize,
_ => unreachable!(),
};
Box::new(
move |mutable: &mut _MutableArrayData, index: usize, start: usize, len: usize| {
mutable
.child_data
.iter_mut()
.for_each(|child| child.extend(index, start * size, (start + len) * size))
},
)
}
pub(super) fn extend_nulls(mutable: &mut _MutableArrayData, len: usize) {
let size = match mutable.data_type {
DataType::FixedSizeList(_, i) => i as usize,
_ => unreachable!(),
};
mutable
.child_data
.iter_mut()
.for_each(|child| child.extend_nulls(len * size))
}