pub trait Dimension: Clone + Eq + Debug + Send + Sync + Default + IndexMut<usize, Output = usize> + Add<Self, Output = Self> + AddAssign<Self> + for<'x> AddAssign<&'x Self> + Sub<Self, Output = Self> + SubAssign<Self> + for<'x> SubAssign<&'x Self> + Mul<usize, Output = Self, Output = Self> + Mul<Self> + MulAssign<Self> + for<'x> MulAssign<&'x Self> + MulAssign<usize> + DimMax<Dim<[usize; 0]>, Output = Self, Output = Self, Output = Dim<IxDynImpl>, Output = Self, Output = Self::Larger> + DimMax<Self> + DimMax<Dim<IxDynImpl>> + DimMax<Self::Smaller> + DimMax<Self::Larger> + DimAdd<Self, Output = Self, Output = Self::Larger, Output = Dim<IxDynImpl>> + DimAdd<Self::Smaller> + DimAdd<Self::Larger> + DimAdd<Dim<[usize; 0]>> + DimAdd<Dim<[usize; 1]>> + DimAdd<Dim<IxDynImpl>> {
    type Pattern: IntoDimension + Clone + Debug + PartialEq<Self::Pattern> + Eq + Default;
    type Smaller: Dimension;
    type Larger: Dimension + RemoveAxis;

    const NDIM: Option<usize>;

    fn ndim(&self) -> usize;
fn into_pattern(self) -> Self::Pattern;
fn zeros(ndim: usize) -> Self;
fn __private__(&self) -> PrivateMarker; fn size(&self) -> usize { ... }
fn size_checked(&self) -> Option<usize> { ... }
fn as_array_view(&self) -> ArrayBase<ViewRepr<&usize>, Dim<[usize; 1]>> { ... }
fn as_array_view_mut(
        &mut self
    ) -> ArrayBase<ViewRepr<&mut usize>, Dim<[usize; 1]>> { ... }
fn into_dyn(self) -> Dim<IxDynImpl> { ... } }
Expand description

Array shape and index trait.

This trait defines a number of methods and operations that can be used on dimensions and indices.

Note: This trait can not be implemented outside the crate

Associated Types

Pattern matching friendly form of the dimension value.

  • For Ix1: usize,
  • For Ix2: (usize, usize)
  • and so on..
  • For IxDyn: IxDyn

Next smaller dimension (if applicable)

Next larger dimension

Associated Constants

For fixed-size dimension representations (e.g. Ix2), this should be Some(ndim), and for variable-size dimension representations (e.g. IxDyn), this should be None.

Required methods

Returns the number of dimensions (number of axes).

Convert the dimension into a pattern matching friendly value.

Creates a dimension of all zeros with the specified ndim.

This method is useful for generalizing over fixed-size and variable-size dimension representations.

Panics if Self has a fixed size that is not ndim.

This trait is private to implement; this method exists to make it impossible to implement outside the crate.

Provided methods

Compute the size of the dimension (number of elements)

Compute the size while checking for overflow.

Borrow as a read-only array view.

Borrow as a read-write array view.

Convert the dimensional into a dynamic dimensional (IxDyn).


IxDyn is a “dynamic” index, pretty hard to use when indexing, and memory wasteful, but it allows an arbitrary and dynamic number of axes.