use arrow::array::{Array, StructArray};
use arrow::compute::utils::combine_validities_and;
use arrow::datatypes::IdxArr;
pub(super) unsafe fn take_unchecked(array: &StructArray, indices: &IdxArr) -> StructArray {
let values: Vec<Box<dyn Array>> = array
.values()
.iter()
.map(|a| super::take_unchecked(a.as_ref(), indices))
.collect();
let validity = array
.validity()
.map(|b| super::bitmap::take_bitmap_nulls_unchecked(b, indices));
let validity = combine_validities_and(validity.as_ref(), indices.validity());
StructArray::new(array.dtype().clone(), indices.len(), values, validity)
}