Skip to main content

SliceArg

Trait SliceArg 

Source
pub trait SliceArg {
    // Required method
    fn apply(
        self,
        dim_size: usize,
        dim_stride: isize,
        out_shape: &mut [usize],
        out_strides: &mut [isize],
        new_ndim: &mut usize,
        offset: &mut isize,
    ) -> Result<(), TensorError>;
}
Expand description

Processes one axis of a slice operation, directly computing the effect on output shape, strides, and byte offset — no intermediate enum dispatch.

Each impl is monomorphized and fully inlined, so the compiler sees concrete types at every call site with zero runtime branching overhead.

Unsigned types: RangeFull, usize, Range<usize>, RangeTo<usize>, RangeFrom<usize>, RangeInclusive<usize>.

Signed types (negative wraps from end): isize, Range<isize>, RangeTo<isize>, RangeFrom<isize>, RangeInclusive<isize>.

Stepped: RangeStep (Rust has no built-in stepped range literal).

Note: integer literals default to i32, so write 0_usize not 0.

Required Methods§

Source

fn apply( self, dim_size: usize, dim_stride: isize, out_shape: &mut [usize], out_strides: &mut [isize], new_ndim: &mut usize, offset: &mut isize, ) -> Result<(), TensorError>

Implementations on Foreign Types§

Source§

impl SliceArg for isize

Source§

fn apply( self, dim_size: usize, dim_stride: isize, out_shape: &mut [usize], out_strides: &mut [isize], new_ndim: &mut usize, offset: &mut isize, ) -> Result<(), TensorError>

Source§

impl SliceArg for usize

Source§

fn apply( self, dim_size: usize, dim_stride: isize, _out_shape: &mut [usize], _out_strides: &mut [isize], _new_ndim: &mut usize, offset: &mut isize, ) -> Result<(), TensorError>

Source§

impl SliceArg for Range<isize>

Source§

fn apply( self, dim_size: usize, dim_stride: isize, out_shape: &mut [usize], out_strides: &mut [isize], new_ndim: &mut usize, offset: &mut isize, ) -> Result<(), TensorError>

Source§

impl SliceArg for Range<usize>

Source§

fn apply( self, dim_size: usize, dim_stride: isize, out_shape: &mut [usize], out_strides: &mut [isize], new_ndim: &mut usize, offset: &mut isize, ) -> Result<(), TensorError>

Source§

impl SliceArg for RangeFrom<isize>

Source§

fn apply( self, dim_size: usize, dim_stride: isize, out_shape: &mut [usize], out_strides: &mut [isize], new_ndim: &mut usize, offset: &mut isize, ) -> Result<(), TensorError>

Source§

impl SliceArg for RangeFrom<usize>

Source§

fn apply( self, dim_size: usize, dim_stride: isize, out_shape: &mut [usize], out_strides: &mut [isize], new_ndim: &mut usize, offset: &mut isize, ) -> Result<(), TensorError>

Source§

impl SliceArg for RangeFull

Source§

fn apply( self, dim_size: usize, dim_stride: isize, out_shape: &mut [usize], out_strides: &mut [isize], new_ndim: &mut usize, _offset: &mut isize, ) -> Result<(), TensorError>

Source§

impl SliceArg for RangeInclusive<isize>

Source§

fn apply( self, dim_size: usize, dim_stride: isize, out_shape: &mut [usize], out_strides: &mut [isize], new_ndim: &mut usize, offset: &mut isize, ) -> Result<(), TensorError>

Source§

impl SliceArg for RangeInclusive<usize>

Source§

fn apply( self, dim_size: usize, dim_stride: isize, out_shape: &mut [usize], out_strides: &mut [isize], new_ndim: &mut usize, offset: &mut isize, ) -> Result<(), TensorError>

Source§

impl SliceArg for RangeTo<isize>

Source§

fn apply( self, dim_size: usize, dim_stride: isize, out_shape: &mut [usize], out_strides: &mut [isize], new_ndim: &mut usize, offset: &mut isize, ) -> Result<(), TensorError>

Source§

impl SliceArg for RangeTo<usize>

Source§

fn apply( self, dim_size: usize, dim_stride: isize, out_shape: &mut [usize], out_strides: &mut [isize], new_ndim: &mut usize, offset: &mut isize, ) -> Result<(), TensorError>

Implementors§