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 = child_to_validity(&array.slots()[0], array.dtype().nullability());
18        Ok(Some(
19            Zstd::try_new(
20                array.dtype().clone(),
21                array.data().with_slice(range.start, range.end),
22                unsliced_validity,
23            )?
24            .into_array(),
25        ))
26    }
27}