Trait tract_core::internal::tract_ndarray::MultiSliceArg[][src]

pub trait MultiSliceArg<'a, A, D> where
    D: Dimension,
    A: 'a, 
{ type Output; fn multi_slice_move(
        &self,
        view: ArrayBase<ViewRepr<&'a mut A>, D>
    ) -> Self::Output;
fn __private__(&self) -> PrivateMarker; }
Expand description

Slicing information describing multiple mutable, disjoint slices.

It’s unfortunate that we need 'a and A to be parameters of the trait, but they’re necessary until Rust supports generic associated types.

Associated Types

type Output[src]

Expand description

The type of the slices created by .multi_slice_move().

Required methods

fn multi_slice_move(
    &self,
    view: ArrayBase<ViewRepr<&'a mut A>, D>
) -> Self::Output
[src]

Expand description

Split the view into multiple disjoint slices.

Panics if performing any individual slice panics or if the slices are not disjoint (i.e. if they intersect).

fn __private__(&self) -> PrivateMarker[src]

Expand description

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

Implementations on Foreign Types

impl<'a, A, D, I0, I1, I2, I3> MultiSliceArg<'a, A, D> for (I0, I1, I2, I3) where
    D: Dimension,
    A: 'a,
    I0: SliceArg<D>,
    I1: SliceArg<D>,
    I2: SliceArg<D>,
    I3: SliceArg<D>, 
[src]

type Output = (ArrayBase<ViewRepr<&'a mut A>, <I0 as SliceArg<D>>::OutDim>, ArrayBase<ViewRepr<&'a mut A>, <I1 as SliceArg<D>>::OutDim>, ArrayBase<ViewRepr<&'a mut A>, <I2 as SliceArg<D>>::OutDim>, ArrayBase<ViewRepr<&'a mut A>, <I3 as SliceArg<D>>::OutDim>)

pub fn multi_slice_move(
    &self,
    view: ArrayBase<ViewRepr<&'a mut A>, D>
) -> <(I0, I1, I2, I3) as MultiSliceArg<'a, A, D>>::Output
[src]

impl<'a, A, D> MultiSliceArg<'a, A, D> for () where
    D: Dimension,
    A: 'a, 
[src]

type Output = ()

pub fn multi_slice_move(
    &self,
    _view: ArrayBase<ViewRepr<&'a mut A>, D>
) -> <() as MultiSliceArg<'a, A, D>>::Output
[src]

impl<'a, A, D, I0, I1, I2, I3, I4, I5> MultiSliceArg<'a, A, D> for (I0, I1, I2, I3, I4, I5) where
    D: Dimension,
    A: 'a,
    I0: SliceArg<D>,
    I1: SliceArg<D>,
    I2: SliceArg<D>,
    I3: SliceArg<D>,
    I4: SliceArg<D>,
    I5: SliceArg<D>, 
[src]

type Output = (ArrayBase<ViewRepr<&'a mut A>, <I0 as SliceArg<D>>::OutDim>, ArrayBase<ViewRepr<&'a mut A>, <I1 as SliceArg<D>>::OutDim>, ArrayBase<ViewRepr<&'a mut A>, <I2 as SliceArg<D>>::OutDim>, ArrayBase<ViewRepr<&'a mut A>, <I3 as SliceArg<D>>::OutDim>, ArrayBase<ViewRepr<&'a mut A>, <I4 as SliceArg<D>>::OutDim>, ArrayBase<ViewRepr<&'a mut A>, <I5 as SliceArg<D>>::OutDim>)

pub fn multi_slice_move(
    &self,
    view: ArrayBase<ViewRepr<&'a mut A>, D>
) -> <(I0, I1, I2, I3, I4, I5) as MultiSliceArg<'a, A, D>>::Output
[src]

impl<'a, A, D, I0, I1, I2> MultiSliceArg<'a, A, D> for (I0, I1, I2) where
    D: Dimension,
    A: 'a,
    I0: SliceArg<D>,
    I1: SliceArg<D>,
    I2: SliceArg<D>, 
[src]

type Output = (ArrayBase<ViewRepr<&'a mut A>, <I0 as SliceArg<D>>::OutDim>, ArrayBase<ViewRepr<&'a mut A>, <I1 as SliceArg<D>>::OutDim>, ArrayBase<ViewRepr<&'a mut A>, <I2 as SliceArg<D>>::OutDim>)

pub fn multi_slice_move(
    &self,
    view: ArrayBase<ViewRepr<&'a mut A>, D>
) -> <(I0, I1, I2) as MultiSliceArg<'a, A, D>>::Output
[src]

impl<'a, '_, A, D, T> MultiSliceArg<'a, A, D> for &'_ T where
    T: MultiSliceArg<'a, A, D>,
    D: Dimension,
    A: 'a, 
[src]

type Output = <T as MultiSliceArg<'a, A, D>>::Output

pub fn multi_slice_move(
    &self,
    view: ArrayBase<ViewRepr<&'a mut A>, D>
) -> <&'_ T as MultiSliceArg<'a, A, D>>::Output
[src]

impl<'a, A, D, I0, I1> MultiSliceArg<'a, A, D> for (I0, I1) where
    D: Dimension,
    A: 'a,
    I0: SliceArg<D>,
    I1: SliceArg<D>, 
[src]

type Output = (ArrayBase<ViewRepr<&'a mut A>, <I0 as SliceArg<D>>::OutDim>, ArrayBase<ViewRepr<&'a mut A>, <I1 as SliceArg<D>>::OutDim>)

pub fn multi_slice_move(
    &self,
    view: ArrayBase<ViewRepr<&'a mut A>, D>
) -> <(I0, I1) as MultiSliceArg<'a, A, D>>::Output
[src]

impl<'a, A, D, I0> MultiSliceArg<'a, A, D> for (I0,) where
    D: Dimension,
    A: 'a,
    I0: SliceArg<D>, 
[src]

type Output = (ArrayBase<ViewRepr<&'a mut A>, <I0 as SliceArg<D>>::OutDim>,)

pub fn multi_slice_move(
    &self,
    view: ArrayBase<ViewRepr<&'a mut A>, D>
) -> <(I0,) as MultiSliceArg<'a, A, D>>::Output
[src]

impl<'a, A, D, I0, I1, I2, I3, I4> MultiSliceArg<'a, A, D> for (I0, I1, I2, I3, I4) where
    D: Dimension,
    A: 'a,
    I0: SliceArg<D>,
    I1: SliceArg<D>,
    I2: SliceArg<D>,
    I3: SliceArg<D>,
    I4: SliceArg<D>, 
[src]

type Output = (ArrayBase<ViewRepr<&'a mut A>, <I0 as SliceArg<D>>::OutDim>, ArrayBase<ViewRepr<&'a mut A>, <I1 as SliceArg<D>>::OutDim>, ArrayBase<ViewRepr<&'a mut A>, <I2 as SliceArg<D>>::OutDim>, ArrayBase<ViewRepr<&'a mut A>, <I3 as SliceArg<D>>::OutDim>, ArrayBase<ViewRepr<&'a mut A>, <I4 as SliceArg<D>>::OutDim>)

pub fn multi_slice_move(
    &self,
    view: ArrayBase<ViewRepr<&'a mut A>, D>
) -> <(I0, I1, I2, I3, I4) as MultiSliceArg<'a, A, D>>::Output
[src]

Implementors