extendr_api::prelude

Trait Dimension

Source
pub trait Dimension:
    Clone
    + Eq
    + Debug
    + Send
    + Sync
    + Default
    + IndexMut<usize, Output = usize>
    + Add<Output = Self>
    + AddAssign
    + for<'x> AddAssign<&'x Self>
    + Sub<Output = Self>
    + SubAssign
    + for<'x> SubAssign<&'x Self>
    + Mul<usize, Output = Self, Output = Self>
    + Mul
    + MulAssign
    + 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<Dim = Self> + Clone + Debug + PartialEq + Eq + Default;
    type Smaller: Dimension;
    type Larger: Dimension + RemoveAxis;

    const NDIM: Option<usize>;

    // Required methods
    fn ndim(&self) -> usize;
    fn into_pattern(self) -> Self::Pattern;
    fn zeros(ndim: usize) -> Self;

    // Provided methods
    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

Required Associated Constants§

Source

const NDIM: Option<usize>

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 Associated Types§

Source

type Pattern: IntoDimension<Dim = Self> + Clone + Debug + PartialEq + Eq + Default

Pattern matching friendly form of the dimension value.

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

type Smaller: Dimension

Next smaller dimension (if applicable)

Source

type Larger: Dimension + RemoveAxis

Next larger dimension

Required Methods§

Source

fn ndim(&self) -> usize

Returns the number of dimensions (number of axes).

Source

fn into_pattern(self) -> Self::Pattern

Convert the dimension into a pattern matching friendly value.

Source

fn zeros(ndim: usize) -> Self

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.

Provided Methods§

Source

fn size(&self) -> usize

Compute the size of the dimension (number of elements)

Source

fn size_checked(&self) -> Option<usize>

Compute the size while checking for overflow.

Source

fn as_array_view(&self) -> ArrayBase<ViewRepr<&usize>, Dim<[usize; 1]>>

Borrow as a read-only array view.

Source

fn as_array_view_mut( &mut self, ) -> ArrayBase<ViewRepr<&mut usize>, Dim<[usize; 1]>>

Borrow as a read-write array view.

Source

fn into_dyn(self) -> Dim<IxDynImpl>

Convert the dimensional into a dynamic dimensional (IxDyn).

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl Dimension for Dim<IxDynImpl>

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

Source§

impl Dimension for Dim<[usize; 0]>

Source§

impl Dimension for Dim<[usize; 1]>

Source§

impl Dimension for Dim<[usize; 2]>

Source§

impl Dimension for Dim<[usize; 3]>

Source§

impl Dimension for Dim<[usize; 4]>

Source§

impl Dimension for Dim<[usize; 5]>

Source§

impl Dimension for Dim<[usize; 6]>