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