Skip to main content

vortex_zstd/
slice.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use std::ops::Range;
5
6use vortex_array::ArrayRef;
7use vortex_array::ArrayView;
8use vortex_array::IntoArray;
9use vortex_array::arrays::slice::SliceReduce;
10use vortex_array::vtable::child_to_validity;
11use vortex_error::VortexResult;
12
13use crate::Zstd;
14
15impl SliceReduce for Zstd {
16    fn slice(array: ArrayView<'_, Self>, range: Range<usize>) -> VortexResult<Option<ArrayRef>> {
17        let unsliced_validity =
18            child_to_validity(array.slots()[0].as_ref(), array.dtype().nullability());
19        Ok(Some(
20            Zstd::try_new(
21                array.dtype().clone(),
22                array.data().with_slice(range.start, range.end),
23                unsliced_validity,
24            )?
25            .into_array(),
26        ))
27    }
28}