vortex_array/arrays/struct_/compute/
mask.rs1use vortex_error::VortexResult;
5use vortex_mask::Mask;
6
7use crate::ArrayRef;
8use crate::IntoArray;
9use crate::arrays::StructArray;
10use crate::arrays::StructVTable;
11use crate::compute::MaskKernel;
12use crate::compute::MaskKernelAdapter;
13use crate::register_kernel;
14use crate::vtable::ValidityHelper;
15
16impl MaskKernel for StructVTable {
17 fn mask(&self, array: &StructArray, filter_mask: &Mask) -> VortexResult<ArrayRef> {
18 let validity = array.validity().mask(filter_mask);
19
20 StructArray::try_new_with_dtype(
21 array.fields().clone(),
22 array.struct_fields().clone(),
23 array.len(),
24 validity,
25 )
26 .map(|a| a.into_array())
27 }
28}
29register_kernel!(MaskKernelAdapter(StructVTable).lift());