pub struct ViewDescriptor {
pub base_offset: usize,
pub shape: Vec<usize>,
pub strides: Vec<usize>,
}Expand description
Describes a logical view into a flat buffer via an offset, shape, and strides.
The flat index of element (i₀, i₁, …, iₙ₋₁) is:
base_offset + Σ iₖ * strides[k]§Examples
use ipfrs_tensorlogic::slice_view::ViewDescriptor;
// 2×3 row-major view starting at element 0
let desc = ViewDescriptor {
base_offset: 0,
shape: vec![2, 3],
strides: vec![3, 1],
};
assert_eq!(desc.flat_index(&[1, 2]), Some(5));
assert!(desc.is_contiguous());Fields§
§base_offset: usizeStarting element index in the flat backing buffer.
shape: Vec<usize>Logical shape of the view.
strides: Vec<usize>Logical strides (one per dimension).
Implementations§
Source§impl ViewDescriptor
impl ViewDescriptor
Sourcepub fn total_elements(&self) -> usize
pub fn total_elements(&self) -> usize
Total number of logical elements (product of shape; 1 for a scalar).
Sourcepub fn flat_index(&self, indices: &[usize]) -> Option<usize>
pub fn flat_index(&self, indices: &[usize]) -> Option<usize>
Compute the flat index for a multi-dimensional index tuple.
Returns None if:
indices.len() != self.ndim(), or- any
indices[i] >= self.shape[i].
Sourcepub fn is_contiguous(&self) -> bool
pub fn is_contiguous(&self) -> bool
Returns true if the view is C (row-major) contiguous.
A view is contiguous when strides[ndim-1] == 1 and each preceding
stride equals the product of the following shape dimensions.
Trait Implementations§
Source§impl Clone for ViewDescriptor
impl Clone for ViewDescriptor
Source§fn clone(&self) -> ViewDescriptor
fn clone(&self) -> ViewDescriptor
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ViewDescriptor
impl Debug for ViewDescriptor
impl Eq for ViewDescriptor
Source§impl PartialEq for ViewDescriptor
impl PartialEq for ViewDescriptor
Source§fn eq(&self, other: &ViewDescriptor) -> bool
fn eq(&self, other: &ViewDescriptor) -> bool
Tests for
self and other values to be equal, and is used by ==.impl StructuralPartialEq for ViewDescriptor
Auto Trait Implementations§
impl Freeze for ViewDescriptor
impl RefUnwindSafe for ViewDescriptor
impl Send for ViewDescriptor
impl Sync for ViewDescriptor
impl Unpin for ViewDescriptor
impl UnsafeUnpin for ViewDescriptor
impl UnwindSafe for ViewDescriptor
Blanket Implementations§
impl<T> Allocation for T
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
Mutably borrows from an owned value. Read more
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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>
Converts
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>
Converts
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 more