Trait dfdx::shapes::Shape

source ·
pub trait Shape: 'static + Debug + Clone + Copy + Send + Sync + Eq + PartialEq + HasAxes<Self::AllAxes> + HasAxes<Self::LastAxis> + ReduceShapeTo<(), Self::AllAxes> + ReduceShape<Self::LastAxis> {
    type Concrete: Debug + Clone + Copy + Default + Eq + PartialEq + Index<usize, Output = usize> + IndexMut<usize> + Send + Sync + IntoIterator<Item = usize> + Into<Vec<usize>> + AsRef<[usize]>;
    type AllAxes: Axes;
    type LastAxis: Axes;

    const NUM_DIMS: usize;

    // Required methods
    fn concrete(&self) -> Self::Concrete;
    fn from_concrete(concrete: &Self::Concrete) -> Option<Self>;

    // Provided methods
    fn num_elements(&self) -> usize { ... }
    fn strides(&self) -> Self::Concrete { ... }
}
Expand description

A collection of dimensions (Dim) that change how a multi-dimensional array is interacted with.

Required Associated Types§

source

type Concrete: Debug + Clone + Copy + Default + Eq + PartialEq + Index<usize, Output = usize> + IndexMut<usize> + Send + Sync + IntoIterator<Item = usize> + Into<Vec<usize>> + AsRef<[usize]>

Is [usize; Self::NUM_DIMS], but that is not usable yet.

source

type AllAxes: Axes

All the axes of this shape

source

type LastAxis: Axes

The last axis of this shape

Required Associated Constants§

source

const NUM_DIMS: usize

The number of dimensions the shape has

Required Methods§

source

fn concrete(&self) -> Self::Concrete

source

fn from_concrete(concrete: &Self::Concrete) -> Option<Self>

Provided Methods§

source

fn num_elements(&self) -> usize

The number of elements in this shape; the product of all dimensions.

source

fn strides(&self) -> Self::Concrete

The strides of how this shape is layed out in memory.

Implementations on Foreign Types§

source§

impl Shape for [usize; 4]

source§

const NUM_DIMS: usize = 4usize

§

type Concrete = [usize; 4]

§

type AllAxes = Axes4<0, 1, 2, 3>

§

type LastAxis = Axis<{$Num - 1}>

source§

fn concrete(&self) -> Self::Concrete

source§

fn from_concrete(concrete: &Self::Concrete) -> Option<Self>

source§

impl Shape for [usize; 6]

source§

const NUM_DIMS: usize = 6usize

§

type Concrete = [usize; 6]

§

type AllAxes = Axes6<0, 1, 2, 3, 4, 5>

§

type LastAxis = Axis<{$Num - 1}>

source§

fn concrete(&self) -> Self::Concrete

source§

fn from_concrete(concrete: &Self::Concrete) -> Option<Self>

source§

impl<D1: Dim, D2: Dim> Shape for (D1, D2)

source§

const NUM_DIMS: usize = 2usize

§

type Concrete = [usize; 2]

§

type AllAxes = Axes2<0, 1>

§

type LastAxis = Axis<{$Num - 1}>

source§

fn concrete(&self) -> Self::Concrete

source§

fn from_concrete(concrete: &Self::Concrete) -> Option<Self>

source§

impl<D1: Dim, D2: Dim, D3: Dim, D4: Dim, D5: Dim, D6: Dim> Shape for (D1, D2, D3, D4, D5, D6)

source§

const NUM_DIMS: usize = 6usize

§

type Concrete = [usize; 6]

§

type AllAxes = Axes6<0, 1, 2, 3, 4, 5>

§

type LastAxis = Axis<{$Num - 1}>

source§

fn concrete(&self) -> Self::Concrete

source§

fn from_concrete(concrete: &Self::Concrete) -> Option<Self>

source§

impl<D1: Dim> Shape for (D1,)

source§

const NUM_DIMS: usize = 1usize

§

type Concrete = [usize; 1]

§

type AllAxes = Axis<0>

§

type LastAxis = Axis<{$Num - 1}>

source§

fn concrete(&self) -> Self::Concrete

source§

fn from_concrete(concrete: &Self::Concrete) -> Option<Self>

source§

impl<D1: Dim, D2: Dim, D3: Dim, D4: Dim> Shape for (D1, D2, D3, D4)

source§

const NUM_DIMS: usize = 4usize

§

type Concrete = [usize; 4]

§

type AllAxes = Axes4<0, 1, 2, 3>

§

type LastAxis = Axis<{$Num - 1}>

source§

fn concrete(&self) -> Self::Concrete

source§

fn from_concrete(concrete: &Self::Concrete) -> Option<Self>

source§

impl Shape for [usize; 5]

source§

const NUM_DIMS: usize = 5usize

§

type Concrete = [usize; 5]

§

type AllAxes = Axes5<0, 1, 2, 3, 4>

§

type LastAxis = Axis<{$Num - 1}>

source§

fn concrete(&self) -> Self::Concrete

source§

fn from_concrete(concrete: &Self::Concrete) -> Option<Self>

source§

impl<D1: Dim, D2: Dim, D3: Dim, D4: Dim, D5: Dim> Shape for (D1, D2, D3, D4, D5)

source§

const NUM_DIMS: usize = 5usize

§

type Concrete = [usize; 5]

§

type AllAxes = Axes5<0, 1, 2, 3, 4>

§

type LastAxis = Axis<{$Num - 1}>

source§

fn concrete(&self) -> Self::Concrete

source§

fn from_concrete(concrete: &Self::Concrete) -> Option<Self>

source§

impl<D1: Dim, D2: Dim, D3: Dim> Shape for (D1, D2, D3)

source§

const NUM_DIMS: usize = 3usize

§

type Concrete = [usize; 3]

§

type AllAxes = Axes3<0, 1, 2>

§

type LastAxis = Axis<{$Num - 1}>

source§

fn concrete(&self) -> Self::Concrete

source§

fn from_concrete(concrete: &Self::Concrete) -> Option<Self>

source§

impl Shape for [usize; 2]

source§

const NUM_DIMS: usize = 2usize

§

type Concrete = [usize; 2]

§

type AllAxes = Axes2<0, 1>

§

type LastAxis = Axis<{$Num - 1}>

source§

fn concrete(&self) -> Self::Concrete

source§

fn from_concrete(concrete: &Self::Concrete) -> Option<Self>

source§

impl Shape for ()

source§

const NUM_DIMS: usize = 0usize

§

type Concrete = [usize; 0]

§

type AllAxes = Axis<0>

§

type LastAxis = Axis<0>

source§

fn concrete(&self) -> Self::Concrete

source§

fn strides(&self) -> Self::Concrete

source§

fn from_concrete(_: &Self::Concrete) -> Option<Self>

source§

impl Shape for [usize; 1]

source§

const NUM_DIMS: usize = 1usize

§

type Concrete = [usize; 1]

§

type AllAxes = Axis<0>

§

type LastAxis = Axis<{$Num - 1}>

source§

fn concrete(&self) -> Self::Concrete

source§

fn from_concrete(concrete: &Self::Concrete) -> Option<Self>

source§

impl Shape for [usize; 3]

source§

const NUM_DIMS: usize = 3usize

§

type Concrete = [usize; 3]

§

type AllAxes = Axes3<0, 1, 2>

§

type LastAxis = Axis<{$Num - 1}>

source§

fn concrete(&self) -> Self::Concrete

source§

fn from_concrete(concrete: &Self::Concrete) -> Option<Self>

Implementors§