vortex_array/arrays/masked/vtable/
operations.rs1use std::ops::Range;
5
6use vortex_scalar::Scalar;
7
8use crate::ArrayRef;
9use crate::IntoArray;
10use crate::arrays::MaskedVTable;
11use crate::arrays::masked::MaskedArray;
12use crate::stats::ArrayStats;
13use crate::vtable::OperationsVTable;
14
15impl OperationsVTable<MaskedVTable> for MaskedVTable {
16 fn slice(array: &MaskedArray, range: Range<usize>) -> ArrayRef {
17 let child = array.child.slice(range.clone());
18 let validity = array.validity.slice(range);
19
20 MaskedArray {
21 child,
22 validity,
23 dtype: array.dtype.clone(),
24 stats: ArrayStats::default(),
25 }
26 .into_array()
27 }
28
29 fn scalar_at(array: &MaskedArray, index: usize) -> Scalar {
30 array.child.scalar_at(index).into_nullable()
32 }
33}