vortex_array/arrays/varbinview/compute/
mask.rs1use vortex_error::VortexResult;
2use vortex_mask::Mask;
3
4use crate::arrays::{VarBinViewArray, VarBinViewVTable};
5use crate::compute::{MaskKernel, MaskKernelAdapter};
6use crate::vtable::ValidityHelper;
7use crate::{ArrayRef, IntoArray, register_kernel};
8
9impl MaskKernel for VarBinViewVTable {
10 fn mask(&self, array: &VarBinViewArray, mask: &Mask) -> VortexResult<ArrayRef> {
11 Ok(VarBinViewArray::try_new(
12 array.views().clone(),
13 array.buffers().to_vec(),
14 array.dtype().as_nullable(),
15 array.validity().mask(mask)?,
16 )?
17 .into_array())
18 }
19}
20
21register_kernel!(MaskKernelAdapter(VarBinViewVTable).lift());
22
23#[cfg(test)]
24mod tests {
25 use crate::arrays::VarBinViewArray;
26 use crate::compute::conformance::mask::test_mask;
27
28 #[test]
29 fn take_mask_var_bin_view_array() {
30 test_mask(VarBinViewArray::from_iter_str(["one", "two", "three", "four", "five"]).as_ref());
31
32 test_mask(
33 VarBinViewArray::from_iter_nullable_str([
34 Some("one"),
35 None,
36 Some("three"),
37 Some("four"),
38 Some("five"),
39 ])
40 .as_ref(),
41 );
42 }
43}