use super::{_MutableArrayData, Extend};
use crate::ArrayData;
use crate::data::get_fixed_size_binary_width;
pub(super) fn build_extend(array: &ArrayData) -> Extend<'_> {
let size = get_fixed_size_binary_width(array.data_type());
let values = &array.buffers()[0].as_slice()[array.offset() * size..];
Box::new(
move |mutable: &mut _MutableArrayData, _, start: usize, len: usize| {
let buffer = &mut mutable.buffer1;
buffer.extend_from_slice(&values[start * size..(start + len) * size]);
},
)
}
pub(super) fn extend_nulls(mutable: &mut _MutableArrayData, len: usize) {
let size = get_fixed_size_binary_width(&mutable.data_type);
let values_buffer = &mut mutable.buffer1;
values_buffer.extend_zeros(len * size);
}