vortex_array/arrays/varbin/compute/
mask.rs1use vortex_error::VortexResult;
2use vortex_mask::Mask;
3
4use crate::arrays::VarBinEncoding;
5use crate::arrays::varbin::VarBinArray;
6use crate::compute::MaskFn;
7use crate::{Array, ArrayRef};
8
9impl MaskFn<&VarBinArray> for VarBinEncoding {
10 fn mask(&self, array: &VarBinArray, mask: Mask) -> VortexResult<ArrayRef> {
11 Ok(VarBinArray::try_new(
12 array.offsets().clone(),
13 array.bytes().clone(),
14 array.dtype().as_nullable(),
15 array.validity().mask(&mask)?,
16 )?
17 .into_array())
18 }
19}
20
21#[cfg(test)]
22mod test {
23 use vortex_dtype::{DType, Nullability};
24
25 use crate::arrays::VarBinArray;
26 use crate::compute::test_harness::test_mask;
27
28 #[test]
29 fn test_mask_var_bin_array() {
30 let array = VarBinArray::from_vec(
31 vec!["hello", "world", "filter", "good", "bye"],
32 DType::Utf8(Nullability::NonNullable),
33 );
34 test_mask(&array);
35
36 let array = VarBinArray::from_iter(
37 vec![Some("hello"), None, Some("filter"), Some("good"), None],
38 DType::Utf8(Nullability::Nullable),
39 );
40 test_mask(&array);
41 }
42}