Trait dfdx::shapes::SliceShape

source ·
pub trait SliceShape<R>: Shape {
    type Sliced: Shape<Concrete = Self::Concrete>;

    // Required methods
    fn slice(&self, range: &R) -> Option<Self::Sliced>;
    fn first_idx_in_slice(&self, range: &R) -> usize;
}

Required Associated Types§

source

type Sliced: Shape<Concrete = Self::Concrete>

Required Methods§

source

fn slice(&self, range: &R) -> Option<Self::Sliced>

source

fn first_idx_in_slice(&self, range: &R) -> usize

Implementations on Foreign Types§

source§

impl<D1, D2, D3, D4, R1: RangeBounds<usize>, R2: RangeBounds<usize>, R3: RangeBounds<usize>, R4: RangeBounds<usize>> SliceShape<(R1, R2, R3, R4)> for (D1, D2, D3, D4)where D1: SliceDim<R1> + Dim, D2: SliceDim<R2> + Dim, D3: SliceDim<R3> + Dim, D4: SliceDim<R4> + Dim,

§

type Sliced = (<D1 as SliceDim<R1>>::Sliced, <D2 as SliceDim<R2>>::Sliced, <D3 as SliceDim<R3>>::Sliced, <D4 as SliceDim<R4>>::Sliced)

source§

fn slice(&self, range: &(R1, R2, R3, R4)) -> Option<Self::Sliced>

source§

fn first_idx_in_slice(&self, range: &(R1, R2, R3, R4)) -> usize

source§

impl<R1: RangeBounds<usize>, R2: RangeBounds<usize>, R3: RangeBounds<usize>> SliceShape<(R1, R2, R3)> for [usize; 3]where usize: SliceDim<R1> + SliceDim<R2> + SliceDim<R3>,

§

type Sliced = (<usize as SliceDim<R1>>::Sliced, <usize as SliceDim<R2>>::Sliced, <usize as SliceDim<R3>>::Sliced)

source§

fn slice(&self, range: &(R1, R2, R3)) -> Option<Self::Sliced>

source§

fn first_idx_in_slice(&self, range: &(R1, R2, R3)) -> usize

source§

impl<D1, D2, D3, R1: RangeBounds<usize>, R2: RangeBounds<usize>, R3: RangeBounds<usize>> SliceShape<(R1, R2, R3)> for (D1, D2, D3)where D1: SliceDim<R1> + Dim, D2: SliceDim<R2> + Dim, D3: SliceDim<R3> + Dim,

§

type Sliced = (<D1 as SliceDim<R1>>::Sliced, <D2 as SliceDim<R2>>::Sliced, <D3 as SliceDim<R3>>::Sliced)

source§

fn slice(&self, range: &(R1, R2, R3)) -> Option<Self::Sliced>

source§

fn first_idx_in_slice(&self, range: &(R1, R2, R3)) -> usize

source§

impl<D1, D2, D3, D4, D5, R1: RangeBounds<usize>, R2: RangeBounds<usize>, R3: RangeBounds<usize>, R4: RangeBounds<usize>, R5: RangeBounds<usize>> SliceShape<(R1, R2, R3, R4, R5)> for (D1, D2, D3, D4, D5)where D1: SliceDim<R1> + Dim, D2: SliceDim<R2> + Dim, D3: SliceDim<R3> + Dim, D4: SliceDim<R4> + Dim, D5: SliceDim<R5> + Dim,

§

type Sliced = (<D1 as SliceDim<R1>>::Sliced, <D2 as SliceDim<R2>>::Sliced, <D3 as SliceDim<R3>>::Sliced, <D4 as SliceDim<R4>>::Sliced, <D5 as SliceDim<R5>>::Sliced)

source§

fn slice(&self, range: &(R1, R2, R3, R4, R5)) -> Option<Self::Sliced>

source§

fn first_idx_in_slice(&self, range: &(R1, R2, R3, R4, R5)) -> usize

source§

impl SliceShape<()> for ()

§

type Sliced = ()

source§

fn slice(&self, _range: &()) -> Option<Self>

source§

fn first_idx_in_slice(&self, _range: &()) -> usize

source§

impl<D1, D2, D3, D4, D5, D6, R1: RangeBounds<usize>, R2: RangeBounds<usize>, R3: RangeBounds<usize>, R4: RangeBounds<usize>, R5: RangeBounds<usize>, R6: RangeBounds<usize>> SliceShape<(R1, R2, R3, R4, R5, R6)> for (D1, D2, D3, D4, D5, D6)where D1: SliceDim<R1> + Dim, D2: SliceDim<R2> + Dim, D3: SliceDim<R3> + Dim, D4: SliceDim<R4> + Dim, D5: SliceDim<R5> + Dim, D6: SliceDim<R6> + Dim,

§

type Sliced = (<D1 as SliceDim<R1>>::Sliced, <D2 as SliceDim<R2>>::Sliced, <D3 as SliceDim<R3>>::Sliced, <D4 as SliceDim<R4>>::Sliced, <D5 as SliceDim<R5>>::Sliced, <D6 as SliceDim<R6>>::Sliced)

source§

fn slice(&self, range: &(R1, R2, R3, R4, R5, R6)) -> Option<Self::Sliced>

source§

fn first_idx_in_slice(&self, range: &(R1, R2, R3, R4, R5, R6)) -> usize

source§

impl<R1: RangeBounds<usize>> SliceShape<(R1,)> for [usize; 1]where usize: SliceDim<R1>,

§

type Sliced = (<usize as SliceDim<R1>>::Sliced,)

source§

fn slice(&self, range: &(R1,)) -> Option<Self::Sliced>

source§

fn first_idx_in_slice(&self, range: &(R1,)) -> usize

source§

impl<R1: RangeBounds<usize>, R2: RangeBounds<usize>, R3: RangeBounds<usize>, R4: RangeBounds<usize>> SliceShape<(R1, R2, R3, R4)> for [usize; 4]where usize: SliceDim<R1> + SliceDim<R2> + SliceDim<R3> + SliceDim<R4>,

§

type Sliced = (<usize as SliceDim<R1>>::Sliced, <usize as SliceDim<R2>>::Sliced, <usize as SliceDim<R3>>::Sliced, <usize as SliceDim<R4>>::Sliced)

source§

fn slice(&self, range: &(R1, R2, R3, R4)) -> Option<Self::Sliced>

source§

fn first_idx_in_slice(&self, range: &(R1, R2, R3, R4)) -> usize

source§

impl<D1, D2, R1: RangeBounds<usize>, R2: RangeBounds<usize>> SliceShape<(R1, R2)> for (D1, D2)where D1: SliceDim<R1> + Dim, D2: SliceDim<R2> + Dim,

§

type Sliced = (<D1 as SliceDim<R1>>::Sliced, <D2 as SliceDim<R2>>::Sliced)

source§

fn slice(&self, range: &(R1, R2)) -> Option<Self::Sliced>

source§

fn first_idx_in_slice(&self, range: &(R1, R2)) -> usize

source§

impl<R1: RangeBounds<usize>, R2: RangeBounds<usize>, R3: RangeBounds<usize>, R4: RangeBounds<usize>, R5: RangeBounds<usize>> SliceShape<(R1, R2, R3, R4, R5)> for [usize; 5]where usize: SliceDim<R1> + SliceDim<R2> + SliceDim<R3> + SliceDim<R4> + SliceDim<R5>,

§

type Sliced = (<usize as SliceDim<R1>>::Sliced, <usize as SliceDim<R2>>::Sliced, <usize as SliceDim<R3>>::Sliced, <usize as SliceDim<R4>>::Sliced, <usize as SliceDim<R5>>::Sliced)

source§

fn slice(&self, range: &(R1, R2, R3, R4, R5)) -> Option<Self::Sliced>

source§

fn first_idx_in_slice(&self, range: &(R1, R2, R3, R4, R5)) -> usize

source§

impl<R1: RangeBounds<usize>, R2: RangeBounds<usize>> SliceShape<(R1, R2)> for [usize; 2]where usize: SliceDim<R1> + SliceDim<R2>,

§

type Sliced = (<usize as SliceDim<R1>>::Sliced, <usize as SliceDim<R2>>::Sliced)

source§

fn slice(&self, range: &(R1, R2)) -> Option<Self::Sliced>

source§

fn first_idx_in_slice(&self, range: &(R1, R2)) -> usize

source§

impl<R1: RangeBounds<usize>, R2: RangeBounds<usize>, R3: RangeBounds<usize>, R4: RangeBounds<usize>, R5: RangeBounds<usize>, R6: RangeBounds<usize>> SliceShape<(R1, R2, R3, R4, R5, R6)> for [usize; 6]where usize: SliceDim<R1> + SliceDim<R2> + SliceDim<R3> + SliceDim<R4> + SliceDim<R5> + SliceDim<R6>,

§

type Sliced = (<usize as SliceDim<R1>>::Sliced, <usize as SliceDim<R2>>::Sliced, <usize as SliceDim<R3>>::Sliced, <usize as SliceDim<R4>>::Sliced, <usize as SliceDim<R5>>::Sliced, <usize as SliceDim<R6>>::Sliced)

source§

fn slice(&self, range: &(R1, R2, R3, R4, R5, R6)) -> Option<Self::Sliced>

source§

fn first_idx_in_slice(&self, range: &(R1, R2, R3, R4, R5, R6)) -> usize

source§

impl<D1, R1: RangeBounds<usize>> SliceShape<(R1,)> for (D1,)where D1: SliceDim<R1> + Dim,

§

type Sliced = (<D1 as SliceDim<R1>>::Sliced,)

source§

fn slice(&self, range: &(R1,)) -> Option<Self::Sliced>

source§

fn first_idx_in_slice(&self, range: &(R1,)) -> usize

Implementors§