pub struct ArrayV {
pub array: Array,
pub offset: usize,
/* private fields */
}Expand description
§ArrayView
Logical, windowed view over an Array.
ArrayView handles indexing offsets automatically so that the View behaves like a regular array.
§Purpose
This is used to return an indexable view over a subset of the array. Additionally, it can be used to cache null counts for those regions, which can be used to speed up calculations.
§Behaviour
- Indices are always relative to the window.
- Holds a reference to the original
Arrayand window bounds. - Windowing uses an arc clone
- All access (get/index, etc.) is offset-correct and bounds-checked.
- Null count is computed once (on demand or at creation) and cached for subsequent use.
§Notes
Fields§
§array: ArrayThe outer array that this view is derived from - we retain a reference to it. Importantly, this is the full array - not the view, and thus should not be accessed as though it were the view subset.
offset: usizeThe index offset from 0 that for where this view starts from the outer array
Implementations§
Source§impl ArrayV
impl ArrayV
Sourcepub fn new(array: Array, offset: usize, len: usize) -> Self
pub fn new(array: Array, offset: usize, len: usize) -> Self
Construct a windowed view of array[offset..offset+len), with optional precomputed null count.
Sourcepub fn new_nc(
array: Array,
offset: usize,
len: usize,
null_count: usize,
) -> Self
pub fn new_nc( array: Array, offset: usize, len: usize, null_count: usize, ) -> Self
Construct a windowed view, supplying a precomputed null count.
Sourcepub fn spans_backing(&self) -> bool
pub fn spans_backing(&self) -> bool
True when the view spans the entirety of its backing array
(offset == 0 and length matches the underlying array length).
When true, to_array() Arc-bumps the backing array directly with
no buffer copy. When false the view is genuinely windowed and
to_array() falls through to slice_clone, reallocating each
buffer.
Sourcepub fn get<T: MaskedArray + 'static>(&self, i: usize) -> Option<T::CopyType<'_>>
pub fn get<T: MaskedArray + 'static>(&self, i: usize) -> Option<T::CopyType<'_>>
Returns the value at logical index i within the window, or None if out of bounds or null.
Sourcepub unsafe fn get_unchecked<T: MaskedArray + 'static>(
&self,
i: usize,
) -> Option<T::CopyType<'_>>
pub unsafe fn get_unchecked<T: MaskedArray + 'static>( &self, i: usize, ) -> Option<T::CopyType<'_>>
Returns the value at logical index i within the window (unchecked).
§Safety
i must be less than the view’s logical length. No bounds check is performed.
Sourcepub fn get_str(&self, i: usize) -> Option<&str>
pub fn get_str(&self, i: usize) -> Option<&str>
Returns the string value at logical index i within the window, or None if out of bounds or null.
Sourcepub unsafe fn get_str_unchecked(&self, i: usize) -> Option<&str>
pub unsafe fn get_str_unchecked(&self, i: usize) -> Option<&str>
Returns the string value at logical index i within the window.
§Safety
Skips bounds checks, but will still return None if null.
Sourcepub fn get_scalar(&self, i: usize) -> Option<Scalar>
pub fn get_scalar(&self, i: usize) -> Option<Scalar>
Returns the value at logical index i as a Scalar, respecting nulls.
Delegates to Array::get_scalar with the view’s offset applied.
Sourcepub fn slice(&self, offset: usize, len: usize) -> Self
pub fn slice(&self, offset: usize, len: usize) -> Self
Returns a new window view into a sub-range of this view.
Sourcepub fn to_array(&self) -> Array
pub fn to_array(&self) -> Array
Materialise the view window as an owned Array.
If the view covers the entire backing array, returns a cheap clone with no data copy. Otherwise deep-copies the window via slice_clone.
Sourcepub fn to_typed_vec<T: Numeric>(&self) -> Result<Vec64<T>, KernelError>
pub fn to_typed_vec<T: Numeric>(&self) -> Result<Vec64<T>, KernelError>
Extract array data as Vec64<T>, casting numeric values if necessary.
- If array type matches T exactly, copies the slice directly
- If array is a different numeric type, casts each element via
NumCast - Returns error if array type is not numeric or nulls are present
§Example
let av = ArrayV::from(Array::from_float64(...));
let floats: Vec64<f64> = av.to_typed_vec::<f64>()?;Sourcepub fn gather_indices(&self, indices: &[usize]) -> Array
pub fn gather_indices(&self, indices: &[usize]) -> Array
Gather specific indices from this view into a new materialised Array. Indices are relative to this view’s window.
Sourcepub fn data_ptr_and_byte_len(&self) -> (*const u8, usize, usize)
pub fn data_ptr_and_byte_len(&self) -> (*const u8, usize, usize)
Returns a pointer and metadata for raw access
This is not logical length - it is total raw bytes in the buffer, so for non-fixed width types such as bit-packed booleans or strings, please factor this in accordingly.
Sourcepub fn end(&self) -> usize
pub fn end(&self) -> usize
Returns the exclusive end index of the window (relative to parent array).
Sourcepub fn as_tuple(&self) -> (Array, usize, usize)
pub fn as_tuple(&self) -> (Array, usize, usize)
Returns the underlying window as a tuple: (Array, offset, len).
Note: This clones the Arc-wrapped Array.
Sourcepub fn as_tuple_ref(&self) -> (&Array, usize, usize)
pub fn as_tuple_ref(&self) -> (&Array, usize, usize)
Returns a reference tuple: (&Array, offset, len).
This avoids cloning the Arc and returns a reference with a lifetime tied to this ArrayV.
Sourcepub fn null_count(&self) -> usize
pub fn null_count(&self) -> usize
Returns the null count in the window, caching the result after first calculation.
Sourcepub fn has_nulls(&self) -> bool
pub fn has_nulls(&self) -> bool
Returns true when the windowed view holds at least one null.
Reads through null_count, so the cached value is trusted when set
and the full popcount is only paid on the first call that observes
this view.
Sourcepub fn null_mask_view(&self) -> Option<BitmaskV<'_>>
pub fn null_mask_view(&self) -> Option<BitmaskV<'_>>
Returns a windowed view over the underlying null mask, if any.
Trait Implementations§
Source§impl ByteSize for ArrayV
Available on crate feature views only.ByteSize for ArrayV - proportional estimate from underlying array
impl ByteSize for ArrayV
views only.ByteSize for ArrayV - proportional estimate from underlying array
Source§impl Concatenate for ArrayV
impl Concatenate for ArrayV
Source§fn concat(self, other: Self) -> Result<Self, MinarrowError>
fn concat(self, other: Self) -> Result<Self, MinarrowError>
Concatenates two array views by materialising both to owned arrays, concatenating them, and wrapping the result back in a view.
§Notes
- This operation copies data from both views to create owned arrays.
- The resulting view has offset=0 and length equal to the combined length.
Source§impl<'a> From<&'a ArrayV> for BitmaskV<'a>
Available on crate feature views only.Extract the boolean data from an ArrayV, preserving the view’s offset and length.
Panics if the underlying array is not a BooleanArray variant.
impl<'a> From<&'a ArrayV> for BitmaskV<'a>
views only.Extract the boolean data from an ArrayV, preserving the view’s offset and length. Panics if the underlying array is not a BooleanArray variant.
Source§impl From<&FieldArray> for ArrayV
&FieldArray -> ArrayView
impl From<&FieldArray> for ArrayV
&FieldArray -> ArrayView
Arc bumps inner array with offset 0, length self.len().
Source§fn from(field_array: &FieldArray) -> Self
fn from(field_array: &FieldArray) -> Self
Source§impl From<ArrayV> for BooleanArrayV
impl From<ArrayV> for BooleanArrayV
Source§impl From<ArrayV> for NumericArrayV
impl From<ArrayV> for NumericArrayV
Source§impl From<ArrayV> for TemporalArrayV
impl From<ArrayV> for TemporalArrayV
Source§impl From<ArrayV> for TextArrayV
impl From<ArrayV> for TextArrayV
Source§impl From<ArrayV> for Array
ArrayView -> Array
impl From<ArrayV> for Array
ArrayView -> Array
Delegates to to_array, which Arc-bumps the underlying allocation when the
view spans its full backing array (offset = 0, len = array.len()) and only
reallocates via slice_clone for genuinely windowed views.
Source§impl From<BooleanArrayV> for ArrayV
Available on crate feature views only.BooleanArrayView -> ArrayView
impl From<BooleanArrayV> for ArrayV
views only.BooleanArrayView -> ArrayView
Converts by wrapping the inner Arc
Source§fn from(view: BooleanArrayV) -> Self
fn from(view: BooleanArrayV) -> Self
Source§impl From<FieldArray> for ArrayV
FieldArray -> ArrayView
impl From<FieldArray> for ArrayV
FieldArray -> ArrayView
Takes self.array then offset 0, length self.len())
Source§fn from(field_array: FieldArray) -> Self
fn from(field_array: FieldArray) -> Self
Source§impl From<NumericArrayV> for ArrayV
Available on crate feature views only.NumericArrayView -> ArrayView
impl From<NumericArrayV> for ArrayV
views only.NumericArrayView -> ArrayView
Converts by wrapping the inner NumericArray as Array::NumericArray.
Source§fn from(view: NumericArrayV) -> Self
fn from(view: NumericArrayV) -> Self
Source§impl From<Scalar> for ArrayV
Available on crate feature scalar_type only.Scalar -> ArrayView
impl From<Scalar> for ArrayV
scalar_type only.Scalar -> ArrayView
Converts a Scalar to a length-1 ArrayV, enabling scalar broadcasting
in functions that accept impl Into<ArrayV>.
Source§impl From<TemporalArrayV> for ArrayV
Available on crate features datetime and views only.TemporalArrayView -> ArrayView
impl From<TemporalArrayV> for ArrayV
datetime and views only.TemporalArrayView -> ArrayView
Converts by wrapping the inner TemporalArray as Array::TemporalArray.
Source§fn from(view: TemporalArrayV) -> Self
fn from(view: TemporalArrayV) -> Self
Source§impl From<TextArrayV> for ArrayV
Available on crate feature views only.TextArrayView -> ArrayView
impl From<TextArrayV> for ArrayV
views only.TextArrayView -> ArrayView
Converts by wrapping the inner TextArray as Array::TextArray.
Source§fn from(view: TextArrayV) -> Self
fn from(view: TextArrayV) -> Self
Source§impl RowSelection for ArrayV
Available on crate feature select only.
impl RowSelection for ArrayV
select only.Source§impl Shape for ArrayV
impl Shape for ArrayV
impl StructuralPartialEq for ArrayV
Auto Trait Implementations§
impl !Freeze for ArrayV
impl !RefUnwindSafe for ArrayV
impl !UnwindSafe for ArrayV
impl Send for ArrayV
impl Sync for ArrayV
impl Unpin for ArrayV
impl UnsafeUnpin for ArrayV
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> CustomValue for T
impl<T> CustomValue for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Key for Twhere
T: Clone,
impl<T> Key for Twhere
T: Clone,
impl<T, Rhs, Output> NumOps<Rhs, Output> for T
impl<T> PlanCallbackArgs for T
impl<T> PlanCallbackOut for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> ToCompactString for Twhere
T: Display,
impl<T> ToCompactString for Twhere
T: Display,
Source§fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
ToCompactString::to_compact_string() Read moreSource§fn to_compact_string(&self) -> CompactString
fn to_compact_string(&self) -> CompactString
CompactString. Read more