Path: blob/main/crates/polars-arrow/src/legacy/array/slice.rs
6939 views
use crate::array::Array;12/// Utility trait to slice concrete arrow arrays whilst keeping their3/// concrete type. E.g. don't return `Box<dyn Array>`.4pub trait SlicedArray {5/// Slices this [`Array`].6/// # Implementation7/// This operation is `O(1)` over `len`.8/// # Panic9/// This function panics iff `offset + length > self.len()`.10fn slice_typed(&self, offset: usize, length: usize) -> Self11where12Self: Sized;1314/// Slices the [`Array`].15/// # Implementation16/// This operation is `O(1)`.17///18/// # Safety19/// The caller must ensure that `offset + length <= self.len()`20unsafe fn slice_typed_unchecked(&self, offset: usize, length: usize) -> Self21where22Self: Sized;23}2425impl<T: Array + Clone> SlicedArray for T {26fn slice_typed(&self, offset: usize, length: usize) -> Self {27let mut arr = self.clone();28arr.slice(offset, length);29arr30}3132unsafe fn slice_typed_unchecked(&self, offset: usize, length: usize) -> Self {33let mut arr = self.clone();34arr.slice_unchecked(offset, length);35arr36}37}383940