Skip to main content

vortex_array/arrays/scalar_fn/
slice.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use std::ops::Range;
5
6use vortex_error::VortexResult;
7
8use crate::ArrayRef;
9use crate::IntoArray;
10use crate::arrays::ScalarFnArray;
11use crate::arrays::ScalarFnVTable;
12use crate::arrays::SliceReduce;
13
14impl SliceReduce for ScalarFnVTable {
15    fn slice(array: &Self::Array, range: Range<usize>) -> VortexResult<Option<ArrayRef>> {
16        let children: Vec<_> = array
17            .children()
18            .iter()
19            .map(|c| c.slice(range.clone()))
20            .collect::<VortexResult<_>>()?;
21
22        Ok(Some(
23            ScalarFnArray {
24                scalar_fn: array.scalar_fn.clone(),
25                dtype: array.dtype.clone(),
26                len: range.len(),
27                children,
28                stats: Default::default(),
29            }
30            .into_array(),
31        ))
32    }
33}