pub unsafe trait TensorMut<T, const D: usize>: TensorRef<T, D> {
    fn get_reference_mut(&mut self, indexes: [usize; D]) -> Option<&mut T>;
    unsafe fn get_reference_unchecked_mut(
        &mut self,
        indexes: [usize; D]
    ) -> &mut T; }
Expand description

A unique/mutable reference to a tensor (or a portion of it) of some type.

Safety

See TensorRef.

Required Methods§

source

fn get_reference_mut(&mut self, indexes: [usize; D]) -> Option<&mut T>

Gets a mutable reference to the value at the index, if the index is in range. Otherwise returns None.

source

unsafe fn get_reference_unchecked_mut(&mut self, indexes: [usize; D]) -> &mut T

Gets a mutable reference to the value at the index without doing any bounds checking. For a safe alternative see get_reference_mut.

Safety

Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used. Valid indexes are defined as in TensorRef.

Trait Implementations§

source§

impl<T, const D: usize> TensorMut<T, D> for Box<dyn TensorMut<T, D>>

A box of a dynamic TensorMut also implements TensorMut.

source§

fn get_reference_mut(&mut self, indexes: [usize; D]) -> Option<&mut T>

Gets a mutable reference to the value at the index, if the index is in range. Otherwise returns None.
source§

unsafe fn get_reference_unchecked_mut(&mut self, indexes: [usize; D]) -> &mut T

Gets a mutable reference to the value at the index without doing any bounds checking. For a safe alternative see get_reference_mut. Read more
source§

impl<T, const D: usize> TensorRef<T, D> for Box<dyn TensorMut<T, D>>

A box of a dynamic TensorMut also implements TensorRef.

source§

fn get_reference(&self, indexes: [usize; D]) -> Option<&T>

Gets a reference to the value at the index if the index is in range. Otherwise returns None.
source§

fn view_shape(&self) -> [(Dimension, usize); D]

The shape this tensor has. See dimensions for an overview. The product of the lengths in the pairs define how many elements are in the tensor (or the portion of it that is visible).
source§

unsafe fn get_reference_unchecked(&self, indexes: [usize; D]) -> &T

Gets a reference to the value at the index without doing any bounds checking. For a safe alternative see get_reference. Read more
source§

fn data_layout(&self) -> DataLayout<D>

The way the data in this tensor is laid out in memory. In particular, Linear has several requirements on what is returned that must be upheld by implementations of this trait. Read more

Implementations on Foreign Types§

source§

impl<'source, T, S, const D: usize> TensorMut<T, D> for &'source mut Swhere
    S: TensorMut<T, D>,

If some type implements TensorMut, then an exclusive reference to it implements TensorMut as well

source§

fn get_reference_mut(&mut self, indexes: [usize; D]) -> Option<&mut T>

source§

unsafe fn get_reference_unchecked_mut(&mut self, indexes: [usize; D]) -> &mut T

source§

impl<T, S, const D: usize> TensorMut<T, D> for Box<S>where
    S: TensorMut<T, D>,

A box of a TensorMut also implements TensorMut.

source§

fn get_reference_mut(&mut self, indexes: [usize; D]) -> Option<&mut T>

source§

unsafe fn get_reference_unchecked_mut(&mut self, indexes: [usize; D]) -> &mut T

source§

impl<T, const D: usize> TensorMut<T, D> for Box<dyn TensorMut<T, D>>

A box of a dynamic TensorMut also implements TensorMut.

source§

fn get_reference_mut(&mut self, indexes: [usize; D]) -> Option<&mut T>

source§

unsafe fn get_reference_unchecked_mut(&mut self, indexes: [usize; D]) -> &mut T

Implementors§

source§

impl<T, S1, S2> TensorMut<T, { $d + 1 }> for TensorStack<T, (S1, S2), 0>where
    S1: TensorMut<T, 0>,
    S2: TensorMut<T, 0>,

source§

impl<T, S1, S2> TensorMut<T, { $d + 1 }> for TensorStack<T, (S1, S2), 1>where
    S1: TensorMut<T, 1>,
    S2: TensorMut<T, 1>,

source§

impl<T, S1, S2> TensorMut<T, { $d + 1 }> for TensorStack<T, (S1, S2), 2>where
    S1: TensorMut<T, 2>,
    S2: TensorMut<T, 2>,

source§

impl<T, S1, S2> TensorMut<T, { $d + 1 }> for TensorStack<T, (S1, S2), 3>where
    S1: TensorMut<T, 3>,
    S2: TensorMut<T, 3>,

source§

impl<T, S1, S2> TensorMut<T, { $d + 1 }> for TensorStack<T, (S1, S2), 4>where
    S1: TensorMut<T, 4>,
    S2: TensorMut<T, 4>,

source§

impl<T, S1, S2> TensorMut<T, { $d + 1 }> for TensorStack<T, (S1, S2), 5>where
    S1: TensorMut<T, 5>,
    S2: TensorMut<T, 5>,

source§

impl<T, S1, S2, S3> TensorMut<T, { $d + 1 }> for TensorStack<T, (S1, S2, S3), 0>where
    S1: TensorMut<T, 0>,
    S2: TensorMut<T, 0>,
    S3: TensorMut<T, 0>,

source§

impl<T, S1, S2, S3> TensorMut<T, { $d + 1 }> for TensorStack<T, (S1, S2, S3), 1>where
    S1: TensorMut<T, 1>,
    S2: TensorMut<T, 1>,
    S3: TensorMut<T, 1>,

source§

impl<T, S1, S2, S3> TensorMut<T, { $d + 1 }> for TensorStack<T, (S1, S2, S3), 2>where
    S1: TensorMut<T, 2>,
    S2: TensorMut<T, 2>,
    S3: TensorMut<T, 2>,

source§

impl<T, S1, S2, S3> TensorMut<T, { $d + 1 }> for TensorStack<T, (S1, S2, S3), 3>where
    S1: TensorMut<T, 3>,
    S2: TensorMut<T, 3>,
    S3: TensorMut<T, 3>,

source§

impl<T, S1, S2, S3> TensorMut<T, { $d + 1 }> for TensorStack<T, (S1, S2, S3), 4>where
    S1: TensorMut<T, 4>,
    S2: TensorMut<T, 4>,
    S3: TensorMut<T, 4>,

source§

impl<T, S1, S2, S3> TensorMut<T, { $d + 1 }> for TensorStack<T, (S1, S2, S3), 5>where
    S1: TensorMut<T, 5>,
    S2: TensorMut<T, 5>,
    S3: TensorMut<T, 5>,

source§

impl<T, S1, S2, S3, S4> TensorMut<T, { $d + 1 }> for TensorStack<T, (S1, S2, S3, S4), 0>where
    S1: TensorMut<T, 0>,
    S2: TensorMut<T, 0>,
    S3: TensorMut<T, 0>,
    S4: TensorMut<T, 0>,

source§

impl<T, S1, S2, S3, S4> TensorMut<T, { $d + 1 }> for TensorStack<T, (S1, S2, S3, S4), 1>where
    S1: TensorMut<T, 1>,
    S2: TensorMut<T, 1>,
    S3: TensorMut<T, 1>,
    S4: TensorMut<T, 1>,

source§

impl<T, S1, S2, S3, S4> TensorMut<T, { $d + 1 }> for TensorStack<T, (S1, S2, S3, S4), 2>where
    S1: TensorMut<T, 2>,
    S2: TensorMut<T, 2>,
    S3: TensorMut<T, 2>,
    S4: TensorMut<T, 2>,

source§

impl<T, S1, S2, S3, S4> TensorMut<T, { $d + 1 }> for TensorStack<T, (S1, S2, S3, S4), 3>where
    S1: TensorMut<T, 3>,
    S2: TensorMut<T, 3>,
    S3: TensorMut<T, 3>,
    S4: TensorMut<T, 3>,

source§

impl<T, S1, S2, S3, S4> TensorMut<T, { $d + 1 }> for TensorStack<T, (S1, S2, S3, S4), 4>where
    S1: TensorMut<T, 4>,
    S2: TensorMut<T, 4>,
    S3: TensorMut<T, 4>,
    S4: TensorMut<T, 4>,

source§

impl<T, S1, S2, S3, S4> TensorMut<T, { $d + 1 }> for TensorStack<T, (S1, S2, S3, S4), 5>where
    S1: TensorMut<T, 5>,
    S2: TensorMut<T, 5>,
    S3: TensorMut<T, 5>,
    S4: TensorMut<T, 5>,

source§

impl<T, S1, S2, S3, S4, const D: usize> TensorMut<T, D> for TensorChain<T, (S1, S2, S3, S4), D>where
    S1: TensorMut<T, D>,
    S2: TensorMut<T, D>,
    S3: TensorMut<T, D>,
    S4: TensorMut<T, D>,

source§

impl<T, S1, S2, S3, const D: usize> TensorMut<T, D> for TensorChain<T, (S1, S2, S3), D>where
    S1: TensorMut<T, D>,
    S2: TensorMut<T, D>,
    S3: TensorMut<T, D>,

source§

impl<T, S1, S2, const D: usize> TensorMut<T, D> for TensorChain<T, (S1, S2), D>where
    S1: TensorMut<T, D>,
    S2: TensorMut<T, D>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 0, 1>where
    S: TensorMut<T, 0>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 0, 2>where
    S: TensorMut<T, 0>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 0, 3>where
    S: TensorMut<T, 0>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 0, 4>where
    S: TensorMut<T, 0>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 0, 5>where
    S: TensorMut<T, 0>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 0, 6>where
    S: TensorMut<T, 0>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 1, 1>where
    S: TensorMut<T, 1>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 1, 2>where
    S: TensorMut<T, 1>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 1, 3>where
    S: TensorMut<T, 1>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 1, 4>where
    S: TensorMut<T, 1>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 1, 5>where
    S: TensorMut<T, 1>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 2, 1>where
    S: TensorMut<T, 2>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 2, 2>where
    S: TensorMut<T, 2>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 2, 3>where
    S: TensorMut<T, 2>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 2, 4>where
    S: TensorMut<T, 2>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 3, 1>where
    S: TensorMut<T, 3>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 3, 2>where
    S: TensorMut<T, 3>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 3, 3>where
    S: TensorMut<T, 3>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 4, 1>where
    S: TensorMut<T, 4>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 4, 2>where
    S: TensorMut<T, 4>,

source§

impl<T, S> TensorMut<T, { $d + $i }> for TensorExpansion<T, S, 5, 1>where
    S: TensorMut<T, 5>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 1, 1>where
    S: TensorMut<T, 1>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 2, 1>where
    S: TensorMut<T, 2>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 2, 2>where
    S: TensorMut<T, 2>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 3, 1>where
    S: TensorMut<T, 3>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 3, 2>where
    S: TensorMut<T, 3>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 3, 3>where
    S: TensorMut<T, 3>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 4, 1>where
    S: TensorMut<T, 4>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 4, 2>where
    S: TensorMut<T, 4>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 4, 3>where
    S: TensorMut<T, 4>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 4, 4>where
    S: TensorMut<T, 4>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 5, 1>where
    S: TensorMut<T, 5>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 5, 2>where
    S: TensorMut<T, 5>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 5, 3>where
    S: TensorMut<T, 5>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 5, 4>where
    S: TensorMut<T, 5>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 5, 5>where
    S: TensorMut<T, 5>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 6, 1>where
    S: TensorMut<T, 6>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 6, 2>where
    S: TensorMut<T, 6>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 6, 3>where
    S: TensorMut<T, 6>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 6, 4>where
    S: TensorMut<T, 6>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 6, 5>where
    S: TensorMut<T, 6>,

source§

impl<T, S> TensorMut<T, { $d - $i }> for TensorIndex<T, S, 6, 6>where
    S: TensorMut<T, 6>,

source§

impl<T, S, N> TensorMut<T, 2> for TensorRefMatrix<T, S, N>where
    S: MatrixMut<T> + NoInteriorMutability,
    N: DimensionNames,

source§

impl<T, S, const D: usize> TensorMut<T, D> for TensorAccess<T, S, D>where
    S: TensorMut<T, D>,

A TensorAccess implements TensorMut, with the dimension order and indexing matching that of the TensorAccess shape.

source§

impl<T, S, const D: usize> TensorMut<T, D> for TensorTranspose<T, S, D>where
    S: TensorMut<T, D>,

A TensorTranspose implements TensorMut, with the dimension order and indexing matching that of the TensorTranspose shape.

source§

impl<T, S, const D: usize> TensorMut<T, D> for TensorMask<T, S, D>where
    S: TensorMut<T, D>,

A TensorMask implements TensorMut, with the dimension lengths reduced by the mask the the TensorMask was created with.

source§

impl<T, S, const D: usize> TensorMut<T, D> for TensorRange<T, S, D>where
    S: TensorMut<T, D>,

A TensorRange implements TensorMut, with the dimension lengths reduced to the range the the TensorRange was created with.

source§

impl<T, S, const D: usize> TensorMut<T, D> for TensorRename<T, S, D>where
    S: TensorMut<T, D>,

A TensorRename implements TensorMut, with the dimension names the TensorRename was created with overriding the dimension names in the original source.

source§

impl<T, S, const D: usize, const N: usize> TensorMut<T, D> for TensorChain<T, [S; N], D>where
    S: TensorMut<T, D>,

source§

impl<T, S, const N: usize> TensorMut<T, { $d + 1 }> for TensorStack<T, [S; N], 0>where
    S: TensorMut<T, 0>,

source§

impl<T, S, const N: usize> TensorMut<T, { $d + 1 }> for TensorStack<T, [S; N], 1>where
    S: TensorMut<T, 1>,

source§

impl<T, S, const N: usize> TensorMut<T, { $d + 1 }> for TensorStack<T, [S; N], 2>where
    S: TensorMut<T, 2>,

source§

impl<T, S, const N: usize> TensorMut<T, { $d + 1 }> for TensorStack<T, [S; N], 3>where
    S: TensorMut<T, 3>,

source§

impl<T, S, const N: usize> TensorMut<T, { $d + 1 }> for TensorStack<T, [S; N], 4>where
    S: TensorMut<T, 4>,

source§

impl<T, S, const N: usize> TensorMut<T, { $d + 1 }> for TensorStack<T, [S; N], 5>where
    S: TensorMut<T, 5>,

source§

impl<T, const D: usize> TensorMut<T, D> for Tensor<T, D>