Trait rten_tensor::MutLayout
source · pub trait MutLayout: Layout + Clone {
Show 15 methods
// Required methods
fn from_shape(shape: Self::Index<'_>) -> Self;
fn from_shape_and_strides(
shape: Self::Index<'_>,
strides: Self::Index<'_>,
overlap: OverlapPolicy,
) -> Result<Self, FromDataError>;
fn move_axis(&mut self, from: usize, to: usize);
fn permuted(&self, order: Self::Index<'_>) -> Self;
fn resize_dim(&mut self, dim: usize, size: usize);
fn transposed(&self) -> Self;
fn slice<const M: usize>(
&self,
range: &[SliceItem],
) -> (Range<usize>, NdLayout<M>);
fn slice_dyn(&self, range: &[SliceItem]) -> (Range<usize>, DynLayout);
fn squeezed(&self) -> DynLayout;
fn split(
&self,
axis: usize,
mid: usize,
) -> ((Range<usize>, Self), (Range<usize>, Self));
fn try_slice<R: IntoSliceItems>(
&self,
range: R,
) -> Result<(Range<usize>, DynLayout), SliceError>;
// Provided methods
fn index_axis(
&self,
axis: usize,
index: usize,
) -> (Range<usize>, <Self as RemoveDim>::Output)
where Self: RemoveDim { ... }
fn reshaped_for_view<S: IntoLayout>(
&self,
shape: S,
) -> Result<S::Layout, ReshapeError> { ... }
fn reshaped_for_copy<S: IntoLayout>(
&self,
shape: S,
) -> Result<S::Layout, ReshapeError> { ... }
fn slice_axis(
&self,
axis: usize,
range: Range<usize>,
) -> (Range<usize>, Self) { ... }
}Expand description
MutLayout extends Layout with methods for creating, modifying and transforming layouts.
Required Methods§
sourcefn from_shape(shape: Self::Index<'_>) -> Self
fn from_shape(shape: Self::Index<'_>) -> Self
Create a new contiguous layout with a given shape.
sourcefn from_shape_and_strides(
shape: Self::Index<'_>,
strides: Self::Index<'_>,
overlap: OverlapPolicy,
) -> Result<Self, FromDataError>
fn from_shape_and_strides( shape: Self::Index<'_>, strides: Self::Index<'_>, overlap: OverlapPolicy, ) -> Result<Self, FromDataError>
Create a layout with custom strides.
The strides specify the offset gap between successive entries along a
given axis. overlap controls whether the layout is allowed to map
multiple indices to the same element. This can be true for immutable
views, but must be false for tensors or views that are mutable.
sourcefn move_axis(&mut self, from: usize, to: usize)
fn move_axis(&mut self, from: usize, to: usize)
Move the axis at position from to to by swapping their strides.
sourcefn permuted(&self, order: Self::Index<'_>) -> Self
fn permuted(&self, order: Self::Index<'_>) -> Self
Return a layout with the axes permuted according to the given order.
fn resize_dim(&mut self, dim: usize, size: usize)
sourcefn transposed(&self) -> Self
fn transposed(&self) -> Self
Reverse the order of dimensions. This is equivalent to
self.permuted([N-1, N-2, ... 0]).
sourcefn slice<const M: usize>(
&self,
range: &[SliceItem],
) -> (Range<usize>, NdLayout<M>)
fn slice<const M: usize>( &self, range: &[SliceItem], ) -> (Range<usize>, NdLayout<M>)
Slice the layout.
Returns a tuple of (offset_range, sliced_layout).
sourcefn slice_dyn(&self, range: &[SliceItem]) -> (Range<usize>, DynLayout)
fn slice_dyn(&self, range: &[SliceItem]) -> (Range<usize>, DynLayout)
Slice the layout and return a dynamic rank layout.
Returns a tuple of (offset_range, sliced_layout).
sourcefn split(
&self,
axis: usize,
mid: usize,
) -> ((Range<usize>, Self), (Range<usize>, Self))
fn split( &self, axis: usize, mid: usize, ) -> ((Range<usize>, Self), (Range<usize>, Self))
Split the layout along the given axis into two.
Returns a tuple of (left, right) where each item is an (offset_range, layout) tuple.
sourcefn try_slice<R: IntoSliceItems>(
&self,
range: R,
) -> Result<(Range<usize>, DynLayout), SliceError>
fn try_slice<R: IntoSliceItems>( &self, range: R, ) -> Result<(Range<usize>, DynLayout), SliceError>
Attempt to slice the layout or return an error if the range is invalid for the layout’s shape.
Provided Methods§
sourcefn index_axis(
&self,
axis: usize,
index: usize,
) -> (Range<usize>, <Self as RemoveDim>::Output)where
Self: RemoveDim,
fn index_axis(
&self,
axis: usize,
index: usize,
) -> (Range<usize>, <Self as RemoveDim>::Output)where
Self: RemoveDim,
Slice a layout by selecting a single entry from a given axis.
Returns an (offset_range, layout) tuple for the sliced layout.
sourcefn reshaped_for_view<S: IntoLayout>(
&self,
shape: S,
) -> Result<S::Layout, ReshapeError>
fn reshaped_for_view<S: IntoLayout>( &self, shape: S, ) -> Result<S::Layout, ReshapeError>
Return a new layout formed by reshaping this one to shape.
This has the same requirements as
reshaped_for_copy but also requires
that the layout is contiguous.
sourcefn reshaped_for_copy<S: IntoLayout>(
&self,
shape: S,
) -> Result<S::Layout, ReshapeError>
fn reshaped_for_copy<S: IntoLayout>( &self, shape: S, ) -> Result<S::Layout, ReshapeError>
Return a new layout formed by reshaping this one to shape.