pub type MatMut<'a, T, Rows = usize, Cols = usize, RStride = isize, CStride = isize> = Mat<Mut<'a, T, Rows, Cols, RStride, CStride>>;Expand description
mutable view over a matrix, similar to a mutable reference to a 2d strided slice
§note
unlike a slice, the data pointed to by MatMut<'_, T> is allowed to be
partially or fully uninitialized under certain conditions. In this case,
care must be taken to not perform any operations that read the uninitialized
values, either directly or indirectly through any of the numerical library
routines, unless it is explicitly permitted
§move semantics
since MatMut mutably borrows data, it cannot be Copy. this means that
if we pass a MatMut to a function that takes it by value, or use a method
that consumes self like [MatMut::transpose_mut], this renders the
original variable unusable
use faer::{Mat, MatMut};
fn takes_matmut(view: MatMut<'_, f64>) {}
let mut matrix = Mat::new();
let view = matrix.as_mut();
takes_matmut(view); // `view` is moved (passed by value)
takes_matmut(view); // this fails to compile since `view` was movedthe way to get around it is to use the reborrow::ReborrowMut trait,
which allows us to mutably borrow a MatMut to obtain another MatMut for
the lifetime of the borrow. it’s also similarly possible to immutably borrow
a MatMut to obtain a MatRef for the lifetime of the borrow, using
reborrow::Reborrow
use faer::{Mat, MatMut, MatRef};
use reborrow::*;
fn takes_matmut(view: MatMut<'_, f64>) {}
fn takes_matref(view: MatRef<'_, f64>) {}
let mut matrix = Mat::new();
let mut view = matrix.as_mut();
takes_matmut(view.rb_mut());
takes_matmut(view.rb_mut());
takes_matref(view.rb());
// view is still usable hereAliased Type§
#[repr(transparent)]pub struct MatMut<'a, T, Rows = usize, Cols = usize, RStride = isize, CStride = isize>(/* private fields */);Implementations§
Source§impl<'a, T> MatMut<'a, T>
impl<'a, T> MatMut<'a, T>
Source§impl<'a, T, Rows: Shape, Cols: Shape, RStride: Stride, CStride: Stride> MatMut<'a, T, Rows, Cols, RStride, CStride>
impl<'a, T, Rows: Shape, Cols: Shape, RStride: Stride, CStride: Stride> MatMut<'a, T, Rows, Cols, RStride, CStride>
Sourcepub const unsafe fn from_raw_parts_mut(
ptr: *mut T,
nrows: Rows,
ncols: Cols,
row_stride: RStride,
col_stride: CStride,
) -> Self
pub const unsafe fn from_raw_parts_mut( ptr: *mut T, nrows: Rows, ncols: Cols, row_stride: RStride, col_stride: CStride, ) -> Self
creates a MatMut from a pointer to the matrix data, dimensions, and
strides
the row (resp. column) stride is the offset from the memory address of a
given matrix element at index (row: i, col: j), to the memory address
of the matrix element at index (row: i + 1, col: 0) (resp. (row: 0, col: i + 1)). this offset is specified in number of elements, not in
bytes
§safety
the behavior is undefined if any of the following conditions are violated:
- for each matrix unit, the entire memory region addressed by the matrix
must be contained
within a single allocation, accessible in its entirety by the
corresponding pointer in
ptr - for each matrix unit, the corresponding pointer must be non null and properly aligned, even for a zero-sized matrix.
- the values accessible by the matrix must be initialized at some point before they are read, or references to them are formed
- no aliasing (including self aliasing) is allowed. in other words, none
of the elements
accessible by any matrix unit may be accessed for reads or writes by any
other means for the duration of the lifetime
'a. no two elements within a single matrix unit may point to the same address (such a thing can be achieved with a zero stride, for example), and no two matrix units may point to the same address
§example
use faer::{MatMut, mat};
// row major matrix with 2 rows, 3 columns, with a column at the end that we want to skip.
// the row stride is the pointer offset from the address of 1.0 to the address of 4.0,
// which is 4
// the column stride is the pointer offset from the address of 1.0 to the address of 2.0,
// which is 1
let mut data = [[1.0, 2.0, 3.0, f64::NAN], [4.0, 5.0, 6.0, f64::NAN]];
let mut matrix =
unsafe { MatMut::from_raw_parts_mut(data.as_mut_ptr() as *mut f64, 2, 3, 4, 1) };
let expected = mat![[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]];
assert_eq!(expected.as_ref(), matrix);Sourcepub fn shape(&self) -> (Rows, Cols)
pub fn shape(&self) -> (Rows, Cols)
returns the number of rows and columns of the matrix
Sourcepub fn row_stride(&self) -> RStride
pub fn row_stride(&self) -> RStride
returns the row stride of the matrix, specified in number of elements, not in bytes
Sourcepub fn col_stride(&self) -> CStride
pub fn col_stride(&self) -> CStride
returns the column stride of the matrix, specified in number of elements, not in bytes
pub fn map<U>(&self, f: impl Fn(&T) -> U) -> Mat<U, Rows, Cols>
pub fn for_each(&self, f: impl Fn(&T))
pub fn map_mut<U>(&mut self, f: impl FnMut(&mut T) -> U) -> Mat<U, Rows, Cols>
pub fn for_each_mut(&mut self, f: impl FnMut(&mut T))
Sourcepub fn ptr_at(&self, row: IdxInc<Rows>, col: IdxInc<Cols>) -> *const T
pub fn ptr_at(&self, row: IdxInc<Rows>, col: IdxInc<Cols>) -> *const T
returns a raw pointer to the element at the given index
Sourcepub unsafe fn ptr_inbounds_at(&self, row: Idx<Rows>, col: Idx<Cols>) -> *const T
pub unsafe fn ptr_inbounds_at(&self, row: Idx<Rows>, col: Idx<Cols>) -> *const T
returns a raw pointer to the element at the given index, assuming the provided index is within the matrix bounds
§safety
the behavior is undefined if any of the following conditions are violated:
row < self.nrows()col < self.ncols()
Sourcepub fn split_at(
self,
row: IdxInc<Rows>,
col: IdxInc<Cols>,
) -> (MatRef<'a, T, usize, usize, RStride, CStride>, MatRef<'a, T, usize, usize, RStride, CStride>, MatRef<'a, T, usize, usize, RStride, CStride>, MatRef<'a, T, usize, usize, RStride, CStride>)
pub fn split_at( self, row: IdxInc<Rows>, col: IdxInc<Cols>, ) -> (MatRef<'a, T, usize, usize, RStride, CStride>, MatRef<'a, T, usize, usize, RStride, CStride>, MatRef<'a, T, usize, usize, RStride, CStride>, MatRef<'a, T, usize, usize, RStride, CStride>)
see [MatRef::split_at]
Sourcepub fn split_at_row(
self,
row: IdxInc<Rows>,
) -> (MatRef<'a, T, usize, Cols, RStride, CStride>, MatRef<'a, T, usize, Cols, RStride, CStride>)
pub fn split_at_row( self, row: IdxInc<Rows>, ) -> (MatRef<'a, T, usize, Cols, RStride, CStride>, MatRef<'a, T, usize, Cols, RStride, CStride>)
see [MatRef::split_at_row]
Sourcepub fn split_at_col(
self,
col: IdxInc<Cols>,
) -> (MatRef<'a, T, Rows, usize, RStride, CStride>, MatRef<'a, T, Rows, usize, RStride, CStride>)
pub fn split_at_col( self, col: IdxInc<Cols>, ) -> (MatRef<'a, T, Rows, usize, RStride, CStride>, MatRef<'a, T, Rows, usize, RStride, CStride>)
see [MatRef::split_at_col]
Sourcepub fn conjugate(self) -> MatRef<'a, T::Conj, Rows, Cols, RStride, CStride>where
T: Conjugate,
pub fn conjugate(self) -> MatRef<'a, T::Conj, Rows, Cols, RStride, CStride>where
T: Conjugate,
see [MatRef::conjugate]
Sourcepub fn canonical(self) -> MatRef<'a, T::Canonical, Rows, Cols, RStride, CStride>where
T: Conjugate,
pub fn canonical(self) -> MatRef<'a, T::Canonical, Rows, Cols, RStride, CStride>where
T: Conjugate,
see [MatRef::canonical]
Sourcepub fn adjoint(self) -> MatRef<'a, T::Conj, Cols, Rows, CStride, RStride>where
T: Conjugate,
pub fn adjoint(self) -> MatRef<'a, T::Conj, Cols, Rows, CStride, RStride>where
T: Conjugate,
see [MatRef::adjoint]
Sourcepub fn reverse_rows(self) -> MatRef<'a, T, Rows, Cols, RStride::Rev, CStride>
pub fn reverse_rows(self) -> MatRef<'a, T, Rows, Cols, RStride::Rev, CStride>
see [MatRef::reverse_rows]
Sourcepub fn reverse_cols(self) -> MatRef<'a, T, Rows, Cols, RStride, CStride::Rev>
pub fn reverse_cols(self) -> MatRef<'a, T, Rows, Cols, RStride, CStride::Rev>
see [MatRef::reverse_cols]
Sourcepub fn reverse_rows_and_cols(
self,
) -> MatRef<'a, T, Rows, Cols, RStride::Rev, CStride::Rev>
pub fn reverse_rows_and_cols( self, ) -> MatRef<'a, T, Rows, Cols, RStride::Rev, CStride::Rev>
see [MatRef::reverse_rows_and_cols]
Sourcepub fn submatrix<V: Shape, H: Shape>(
self,
row_start: IdxInc<Rows>,
col_start: IdxInc<Cols>,
nrows: V,
ncols: H,
) -> MatRef<'a, T, V, H, RStride, CStride>
pub fn submatrix<V: Shape, H: Shape>( self, row_start: IdxInc<Rows>, col_start: IdxInc<Cols>, nrows: V, ncols: H, ) -> MatRef<'a, T, V, H, RStride, CStride>
see [MatRef::submatrix]
Sourcepub fn subrows<V: Shape>(
self,
row_start: IdxInc<Rows>,
nrows: V,
) -> MatRef<'a, T, V, Cols, RStride, CStride>
pub fn subrows<V: Shape>( self, row_start: IdxInc<Rows>, nrows: V, ) -> MatRef<'a, T, V, Cols, RStride, CStride>
see [MatRef::subrows]
Sourcepub fn subcols<H: Shape>(
self,
col_start: IdxInc<Cols>,
ncols: H,
) -> MatRef<'a, T, Rows, H, RStride, CStride>
pub fn subcols<H: Shape>( self, col_start: IdxInc<Cols>, ncols: H, ) -> MatRef<'a, T, Rows, H, RStride, CStride>
see [MatRef::subcols]
Sourcepub fn as_shape<V: Shape, H: Shape>(
self,
nrows: V,
ncols: H,
) -> MatRef<'a, T, V, H, RStride, CStride>
pub fn as_shape<V: Shape, H: Shape>( self, nrows: V, ncols: H, ) -> MatRef<'a, T, V, H, RStride, CStride>
see [MatRef::as_shape]
Sourcepub fn as_row_shape<V: Shape>(
self,
nrows: V,
) -> MatRef<'a, T, V, Cols, RStride, CStride>
pub fn as_row_shape<V: Shape>( self, nrows: V, ) -> MatRef<'a, T, V, Cols, RStride, CStride>
see [MatRef::as_row_shape]
Sourcepub fn as_col_shape<H: Shape>(
self,
ncols: H,
) -> MatRef<'a, T, Rows, H, RStride, CStride>
pub fn as_col_shape<H: Shape>( self, ncols: H, ) -> MatRef<'a, T, Rows, H, RStride, CStride>
see [MatRef::as_col_shape]
Sourcepub fn as_dyn_stride(self) -> MatRef<'a, T, Rows, Cols, isize, isize>
pub fn as_dyn_stride(self) -> MatRef<'a, T, Rows, Cols, isize, isize>
see [MatRef::as_dyn_stride]
Sourcepub fn as_dyn_rows(self) -> MatRef<'a, T, usize, Cols, RStride, CStride>
pub fn as_dyn_rows(self) -> MatRef<'a, T, usize, Cols, RStride, CStride>
see [MatRef::as_dyn_rows]
Sourcepub fn as_dyn_cols(self) -> MatRef<'a, T, Rows, usize, RStride, CStride>
pub fn as_dyn_cols(self) -> MatRef<'a, T, Rows, usize, RStride, CStride>
see [MatRef::as_dyn_cols]
Sourcepub fn col_iter(
self,
) -> impl 'a + ExactSizeIterator + DoubleEndedIterator<Item = ColRef<'a, T, Rows, RStride>>where
Rows: 'a,
Cols: 'a,
pub fn col_iter(
self,
) -> impl 'a + ExactSizeIterator + DoubleEndedIterator<Item = ColRef<'a, T, Rows, RStride>>where
Rows: 'a,
Cols: 'a,
see [MatRef::col_iter]
Sourcepub fn row_iter(
self,
) -> impl 'a + ExactSizeIterator + DoubleEndedIterator<Item = RowRef<'a, T, Cols, CStride>>where
Rows: 'a,
Cols: 'a,
pub fn row_iter(
self,
) -> impl 'a + ExactSizeIterator + DoubleEndedIterator<Item = RowRef<'a, T, Cols, CStride>>where
Rows: 'a,
Cols: 'a,
see [MatRef::row_iter]
Sourcepub fn par_col_iter(
self,
) -> impl 'a + IndexedParallelIterator<Item = ColRef<'a, T, Rows, RStride>>where
T: Sync,
Rows: 'a,
Cols: 'a,
pub fn par_col_iter(
self,
) -> impl 'a + IndexedParallelIterator<Item = ColRef<'a, T, Rows, RStride>>where
T: Sync,
Rows: 'a,
Cols: 'a,
see [MatRef::par_col_iter]
Sourcepub fn par_row_iter(
self,
) -> impl 'a + IndexedParallelIterator<Item = RowRef<'a, T, Cols, CStride>>where
T: Sync,
Rows: 'a,
Cols: 'a,
pub fn par_row_iter(
self,
) -> impl 'a + IndexedParallelIterator<Item = RowRef<'a, T, Cols, CStride>>where
T: Sync,
Rows: 'a,
Cols: 'a,
see [MatRef::par_row_iter]
Sourcepub fn par_col_chunks(
self,
chunk_size: usize,
) -> impl 'a + IndexedParallelIterator<Item = MatRef<'a, T, Rows, usize, RStride, CStride>>where
T: Sync,
Rows: 'a,
Cols: 'a,
pub fn par_col_chunks(
self,
chunk_size: usize,
) -> impl 'a + IndexedParallelIterator<Item = MatRef<'a, T, Rows, usize, RStride, CStride>>where
T: Sync,
Rows: 'a,
Cols: 'a,
see [MatRef::par_col_chunks]
Sourcepub fn par_col_partition(
self,
count: usize,
) -> impl 'a + IndexedParallelIterator<Item = MatRef<'a, T, Rows, usize, RStride, CStride>>where
T: Sync,
Rows: 'a,
Cols: 'a,
pub fn par_col_partition(
self,
count: usize,
) -> impl 'a + IndexedParallelIterator<Item = MatRef<'a, T, Rows, usize, RStride, CStride>>where
T: Sync,
Rows: 'a,
Cols: 'a,
see [MatRef::par_col_partition]
Sourcepub fn par_row_chunks(
self,
chunk_size: usize,
) -> impl 'a + IndexedParallelIterator<Item = MatRef<'a, T, usize, Cols, RStride, CStride>>where
T: Sync,
Rows: 'a,
Cols: 'a,
pub fn par_row_chunks(
self,
chunk_size: usize,
) -> impl 'a + IndexedParallelIterator<Item = MatRef<'a, T, usize, Cols, RStride, CStride>>where
T: Sync,
Rows: 'a,
Cols: 'a,
see [MatRef::par_row_chunks]
Sourcepub fn par_row_partition(
self,
count: usize,
) -> impl 'a + IndexedParallelIterator<Item = MatRef<'a, T, usize, Cols, RStride, CStride>>where
T: Sync,
Rows: 'a,
Cols: 'a,
pub fn par_row_partition(
self,
count: usize,
) -> impl 'a + IndexedParallelIterator<Item = MatRef<'a, T, usize, Cols, RStride, CStride>>where
T: Sync,
Rows: 'a,
Cols: 'a,
see [MatRef::par_row_partition]
Sourcepub fn try_as_col_major(
self,
) -> Option<MatRef<'a, T, Rows, Cols, ContiguousFwd, CStride>>
pub fn try_as_col_major( self, ) -> Option<MatRef<'a, T, Rows, Cols, ContiguousFwd, CStride>>
see [MatRef::try_as_col_major]
Sourcepub fn try_as_row_major(
self,
) -> Option<MatRef<'a, T, Rows, Cols, RStride, ContiguousFwd>>
pub fn try_as_row_major( self, ) -> Option<MatRef<'a, T, Rows, Cols, RStride, ContiguousFwd>>
see [MatRef::try_as_row_major]
Sourcepub fn bind<'M, 'N>(
self,
row: Guard<'M>,
col: Guard<'N>,
) -> MatMut<'a, T, Dim<'M>, Dim<'N>, RStride, CStride>
pub fn bind<'M, 'N>( self, row: Guard<'M>, col: Guard<'N>, ) -> MatMut<'a, T, Dim<'M>, Dim<'N>, RStride, CStride>
see [MatRef::)]] #[doc(hidden)]
Sourcepub fn get<RowRange, ColRange>(
self,
row: RowRange,
col: ColRange,
) -> <MatRef<'a, T, Rows, Cols, RStride, CStride> as MatIndex<RowRange, ColRange>>::Target
pub fn get<RowRange, ColRange>( self, row: RowRange, col: ColRange, ) -> <MatRef<'a, T, Rows, Cols, RStride, CStride> as MatIndex<RowRange, ColRange>>::Target
see [MatRef::get]
Sourcepub unsafe fn get_unchecked<RowRange, ColRange>(
self,
row: RowRange,
col: ColRange,
) -> <MatRef<'a, T, Rows, Cols, RStride, CStride> as MatIndex<RowRange, ColRange>>::Target
pub unsafe fn get_unchecked<RowRange, ColRange>( self, row: RowRange, col: ColRange, ) -> <MatRef<'a, T, Rows, Cols, RStride, CStride> as MatIndex<RowRange, ColRange>>::Target
Sourcepub fn get_mut<RowRange, ColRange>(
self,
row: RowRange,
col: ColRange,
) -> <MatMut<'a, T, Rows, Cols, RStride, CStride> as MatIndex<RowRange, ColRange>>::Target
pub fn get_mut<RowRange, ColRange>( self, row: RowRange, col: ColRange, ) -> <MatMut<'a, T, Rows, Cols, RStride, CStride> as MatIndex<RowRange, ColRange>>::Target
see [MatRef::get]
Sourcepub unsafe fn get_mut_unchecked<RowRange, ColRange>(
self,
row: RowRange,
col: ColRange,
) -> <MatMut<'a, T, Rows, Cols, RStride, CStride> as MatIndex<RowRange, ColRange>>::Target
pub unsafe fn get_mut_unchecked<RowRange, ColRange>( self, row: RowRange, col: ColRange, ) -> <MatMut<'a, T, Rows, Cols, RStride, CStride> as MatIndex<RowRange, ColRange>>::Target
Source§impl<'a, T, Rows: Shape, Cols: Shape, RStride: Stride, CStride: Stride> MatMut<'a, T, Rows, Cols, RStride, CStride>
impl<'a, T, Rows: Shape, Cols: Shape, RStride: Stride, CStride: Stride> MatMut<'a, T, Rows, Cols, RStride, CStride>
Sourcepub fn as_ptr_mut(&self) -> *mut T
pub fn as_ptr_mut(&self) -> *mut T
see [MatRef::as_ptr]
Sourcepub fn ptr_at_mut(&self, row: IdxInc<Rows>, col: IdxInc<Cols>) -> *mut T
pub fn ptr_at_mut(&self, row: IdxInc<Rows>, col: IdxInc<Cols>) -> *mut T
see [MatRef::ptr_at]
Sourcepub unsafe fn ptr_inbounds_at_mut(
&self,
row: Idx<Rows>,
col: Idx<Cols>,
) -> *mut T
pub unsafe fn ptr_inbounds_at_mut( &self, row: Idx<Rows>, col: Idx<Cols>, ) -> *mut T
see [MatRef::ptr_inbounds_at]
Sourcepub fn split_at_mut(
self,
row: IdxInc<Rows>,
col: IdxInc<Cols>,
) -> (MatMut<'a, T, usize, usize, RStride, CStride>, MatMut<'a, T, usize, usize, RStride, CStride>, MatMut<'a, T, usize, usize, RStride, CStride>, MatMut<'a, T, usize, usize, RStride, CStride>)
pub fn split_at_mut( self, row: IdxInc<Rows>, col: IdxInc<Cols>, ) -> (MatMut<'a, T, usize, usize, RStride, CStride>, MatMut<'a, T, usize, usize, RStride, CStride>, MatMut<'a, T, usize, usize, RStride, CStride>, MatMut<'a, T, usize, usize, RStride, CStride>)
see [MatRef::split_at]
Sourcepub fn split_at_row_mut(
self,
row: IdxInc<Rows>,
) -> (MatMut<'a, T, usize, Cols, RStride, CStride>, MatMut<'a, T, usize, Cols, RStride, CStride>)
pub fn split_at_row_mut( self, row: IdxInc<Rows>, ) -> (MatMut<'a, T, usize, Cols, RStride, CStride>, MatMut<'a, T, usize, Cols, RStride, CStride>)
see [MatRef::split_at_row]
Sourcepub fn split_at_col_mut(
self,
col: IdxInc<Cols>,
) -> (MatMut<'a, T, Rows, usize, RStride, CStride>, MatMut<'a, T, Rows, usize, RStride, CStride>)
pub fn split_at_col_mut( self, col: IdxInc<Cols>, ) -> (MatMut<'a, T, Rows, usize, RStride, CStride>, MatMut<'a, T, Rows, usize, RStride, CStride>)
see [MatRef::split_at_col]
Sourcepub fn transpose_mut(self) -> MatMut<'a, T, Cols, Rows, CStride, RStride>
pub fn transpose_mut(self) -> MatMut<'a, T, Cols, Rows, CStride, RStride>
see [MatRef::transpose]
Sourcepub fn conjugate_mut(self) -> MatMut<'a, T::Conj, Rows, Cols, RStride, CStride>where
T: Conjugate,
pub fn conjugate_mut(self) -> MatMut<'a, T::Conj, Rows, Cols, RStride, CStride>where
T: Conjugate,
see [MatRef::conjugate]
Sourcepub fn canonical_mut(
self,
) -> MatMut<'a, T::Canonical, Rows, Cols, RStride, CStride>where
T: Conjugate,
pub fn canonical_mut(
self,
) -> MatMut<'a, T::Canonical, Rows, Cols, RStride, CStride>where
T: Conjugate,
see [MatRef::canonical]
Sourcepub fn adjoint_mut(self) -> MatMut<'a, T::Conj, Cols, Rows, CStride, RStride>where
T: Conjugate,
pub fn adjoint_mut(self) -> MatMut<'a, T::Conj, Cols, Rows, CStride, RStride>where
T: Conjugate,
see [MatRef::adjoint]
Sourcepub fn reverse_rows_mut(
self,
) -> MatMut<'a, T, Rows, Cols, RStride::Rev, CStride>
pub fn reverse_rows_mut( self, ) -> MatMut<'a, T, Rows, Cols, RStride::Rev, CStride>
see [MatRef::reverse_rows]
Sourcepub fn reverse_cols_mut(
self,
) -> MatMut<'a, T, Rows, Cols, RStride, CStride::Rev>
pub fn reverse_cols_mut( self, ) -> MatMut<'a, T, Rows, Cols, RStride, CStride::Rev>
see [MatRef::reverse_cols]
Sourcepub fn reverse_rows_and_cols_mut(
self,
) -> MatMut<'a, T, Rows, Cols, RStride::Rev, CStride::Rev>
pub fn reverse_rows_and_cols_mut( self, ) -> MatMut<'a, T, Rows, Cols, RStride::Rev, CStride::Rev>
see [MatRef::reverse_rows_and_cols]
Sourcepub fn submatrix_mut<V: Shape, H: Shape>(
self,
row_start: IdxInc<Rows>,
col_start: IdxInc<Cols>,
nrows: V,
ncols: H,
) -> MatMut<'a, T, V, H, RStride, CStride>
pub fn submatrix_mut<V: Shape, H: Shape>( self, row_start: IdxInc<Rows>, col_start: IdxInc<Cols>, nrows: V, ncols: H, ) -> MatMut<'a, T, V, H, RStride, CStride>
see [MatRef::submatrix]
Sourcepub fn subrows_mut<V: Shape>(
self,
row_start: IdxInc<Rows>,
nrows: V,
) -> MatMut<'a, T, V, Cols, RStride, CStride>
pub fn subrows_mut<V: Shape>( self, row_start: IdxInc<Rows>, nrows: V, ) -> MatMut<'a, T, V, Cols, RStride, CStride>
see [MatRef::subrows]
Sourcepub fn subcols_mut<H: Shape>(
self,
col_start: IdxInc<Cols>,
ncols: H,
) -> MatMut<'a, T, Rows, H, RStride, CStride>
pub fn subcols_mut<H: Shape>( self, col_start: IdxInc<Cols>, ncols: H, ) -> MatMut<'a, T, Rows, H, RStride, CStride>
see [MatRef::subcols]
Sourcepub fn as_shape_mut<V: Shape, H: Shape>(
self,
nrows: V,
ncols: H,
) -> MatMut<'a, T, V, H, RStride, CStride>
pub fn as_shape_mut<V: Shape, H: Shape>( self, nrows: V, ncols: H, ) -> MatMut<'a, T, V, H, RStride, CStride>
see [MatRef::as_shape]
Sourcepub fn as_row_shape_mut<V: Shape>(
self,
nrows: V,
) -> MatMut<'a, T, V, Cols, RStride, CStride>
pub fn as_row_shape_mut<V: Shape>( self, nrows: V, ) -> MatMut<'a, T, V, Cols, RStride, CStride>
see [MatRef::as_row_shape]
Sourcepub fn as_col_shape_mut<H: Shape>(
self,
ncols: H,
) -> MatMut<'a, T, Rows, H, RStride, CStride>
pub fn as_col_shape_mut<H: Shape>( self, ncols: H, ) -> MatMut<'a, T, Rows, H, RStride, CStride>
see [MatRef::as_col_shape]
Sourcepub fn as_dyn_stride_mut(self) -> MatMut<'a, T, Rows, Cols, isize, isize>
pub fn as_dyn_stride_mut(self) -> MatMut<'a, T, Rows, Cols, isize, isize>
see [MatRef::as_dyn_stride]
Sourcepub fn as_dyn_mut(self) -> MatMut<'a, T, usize, usize, RStride, CStride>
pub fn as_dyn_mut(self) -> MatMut<'a, T, usize, usize, RStride, CStride>
see [MatRef::as_dyn]
Sourcepub fn as_dyn_rows_mut(self) -> MatMut<'a, T, usize, Cols, RStride, CStride>
pub fn as_dyn_rows_mut(self) -> MatMut<'a, T, usize, Cols, RStride, CStride>
see [MatRef::as_dyn_rows]
Sourcepub fn as_dyn_cols_mut(self) -> MatMut<'a, T, Rows, usize, RStride, CStride>
pub fn as_dyn_cols_mut(self) -> MatMut<'a, T, Rows, usize, RStride, CStride>
see [MatRef::as_dyn_cols]
Sourcepub fn col_iter_mut(
self,
) -> impl 'a + ExactSizeIterator + DoubleEndedIterator<Item = ColMut<'a, T, Rows, RStride>>where
Rows: 'a,
Cols: 'a,
pub fn col_iter_mut(
self,
) -> impl 'a + ExactSizeIterator + DoubleEndedIterator<Item = ColMut<'a, T, Rows, RStride>>where
Rows: 'a,
Cols: 'a,
see [MatRef::col_iter]
Sourcepub fn row_iter_mut(
self,
) -> impl 'a + ExactSizeIterator + DoubleEndedIterator<Item = RowMut<'a, T, Cols, CStride>>where
Rows: 'a,
Cols: 'a,
pub fn row_iter_mut(
self,
) -> impl 'a + ExactSizeIterator + DoubleEndedIterator<Item = RowMut<'a, T, Cols, CStride>>where
Rows: 'a,
Cols: 'a,
see [MatRef::row_iter]
Sourcepub fn par_col_iter_mut(
self,
) -> impl 'a + IndexedParallelIterator<Item = ColMut<'a, T, Rows, RStride>>where
T: Send,
Rows: 'a,
Cols: 'a,
pub fn par_col_iter_mut(
self,
) -> impl 'a + IndexedParallelIterator<Item = ColMut<'a, T, Rows, RStride>>where
T: Send,
Rows: 'a,
Cols: 'a,
see [MatRef::par_col_iter]
Sourcepub fn par_row_iter_mut(
self,
) -> impl 'a + IndexedParallelIterator<Item = RowMut<'a, T, Cols, CStride>>where
T: Send,
Rows: 'a,
Cols: 'a,
pub fn par_row_iter_mut(
self,
) -> impl 'a + IndexedParallelIterator<Item = RowMut<'a, T, Cols, CStride>>where
T: Send,
Rows: 'a,
Cols: 'a,
see [MatRef::par_row_iter]
Sourcepub fn par_col_chunks_mut(
self,
chunk_size: usize,
) -> impl 'a + IndexedParallelIterator<Item = MatMut<'a, T, Rows, usize, RStride, CStride>>where
T: Send,
Rows: 'a,
Cols: 'a,
pub fn par_col_chunks_mut(
self,
chunk_size: usize,
) -> impl 'a + IndexedParallelIterator<Item = MatMut<'a, T, Rows, usize, RStride, CStride>>where
T: Send,
Rows: 'a,
Cols: 'a,
see [MatRef::par_col_chunks]
Sourcepub fn par_col_partition_mut(
self,
count: usize,
) -> impl 'a + IndexedParallelIterator<Item = MatMut<'a, T, Rows, usize, RStride, CStride>>where
T: Send,
Rows: 'a,
Cols: 'a,
pub fn par_col_partition_mut(
self,
count: usize,
) -> impl 'a + IndexedParallelIterator<Item = MatMut<'a, T, Rows, usize, RStride, CStride>>where
T: Send,
Rows: 'a,
Cols: 'a,
see [MatRef::par_col_partition]
Sourcepub fn par_row_chunks_mut(
self,
chunk_size: usize,
) -> impl 'a + IndexedParallelIterator<Item = MatMut<'a, T, usize, Cols, RStride, CStride>>where
T: Send,
Rows: 'a,
Cols: 'a,
pub fn par_row_chunks_mut(
self,
chunk_size: usize,
) -> impl 'a + IndexedParallelIterator<Item = MatMut<'a, T, usize, Cols, RStride, CStride>>where
T: Send,
Rows: 'a,
Cols: 'a,
see [MatRef::par_row_chunks]
Sourcepub fn par_row_partition_mut(
self,
count: usize,
) -> impl 'a + IndexedParallelIterator<Item = MatMut<'a, T, usize, Cols, RStride, CStride>>where
T: Send,
Rows: 'a,
Cols: 'a,
pub fn par_row_partition_mut(
self,
count: usize,
) -> impl 'a + IndexedParallelIterator<Item = MatMut<'a, T, usize, Cols, RStride, CStride>>where
T: Send,
Rows: 'a,
Cols: 'a,
see [MatRef::par_row_partition]
Sourcepub fn split_first_row_mut(
self,
) -> Option<(RowMut<'a, T, Cols, CStride>, MatMut<'a, T, usize, Cols, RStride, CStride>)>
pub fn split_first_row_mut( self, ) -> Option<(RowMut<'a, T, Cols, CStride>, MatMut<'a, T, usize, Cols, RStride, CStride>)>
see [MatRef::split_first_row]
Sourcepub fn split_first_col_mut(
self,
) -> Option<(ColMut<'a, T, Rows, RStride>, MatMut<'a, T, Rows, usize, RStride, CStride>)>
pub fn split_first_col_mut( self, ) -> Option<(ColMut<'a, T, Rows, RStride>, MatMut<'a, T, Rows, usize, RStride, CStride>)>
see [MatRef::split_first_col]
Sourcepub fn split_last_row_mut(
self,
) -> Option<(RowMut<'a, T, Cols, CStride>, MatMut<'a, T, usize, Cols, RStride, CStride>)>
pub fn split_last_row_mut( self, ) -> Option<(RowMut<'a, T, Cols, CStride>, MatMut<'a, T, usize, Cols, RStride, CStride>)>
see [MatRef::split_last_row]
Sourcepub fn split_last_col_mut(
self,
) -> Option<(ColMut<'a, T, Rows, RStride>, MatMut<'a, T, Rows, usize, RStride, CStride>)>
pub fn split_last_col_mut( self, ) -> Option<(ColMut<'a, T, Rows, RStride>, MatMut<'a, T, Rows, usize, RStride, CStride>)>
see [MatRef::split_last_col]
Sourcepub fn split_first_row(
self,
) -> Option<(RowRef<'a, T, Cols, CStride>, MatRef<'a, T, usize, Cols, RStride, CStride>)>
pub fn split_first_row( self, ) -> Option<(RowRef<'a, T, Cols, CStride>, MatRef<'a, T, usize, Cols, RStride, CStride>)>
see [MatRef::split_first_row]
Sourcepub fn split_first_col(
self,
) -> Option<(ColRef<'a, T, Rows, RStride>, MatRef<'a, T, Rows, usize, RStride, CStride>)>
pub fn split_first_col( self, ) -> Option<(ColRef<'a, T, Rows, RStride>, MatRef<'a, T, Rows, usize, RStride, CStride>)>
see [MatRef::split_first_col]
Sourcepub fn split_last_row(
self,
) -> Option<(RowRef<'a, T, Cols, CStride>, MatRef<'a, T, usize, Cols, RStride, CStride>)>
pub fn split_last_row( self, ) -> Option<(RowRef<'a, T, Cols, CStride>, MatRef<'a, T, usize, Cols, RStride, CStride>)>
see [MatRef::split_last_row]
Sourcepub fn split_last_col(
self,
) -> Option<(ColRef<'a, T, Rows, RStride>, MatRef<'a, T, Rows, usize, RStride, CStride>)>
pub fn split_last_col( self, ) -> Option<(ColRef<'a, T, Rows, RStride>, MatRef<'a, T, Rows, usize, RStride, CStride>)>
see [MatRef::split_last_col]
Sourcepub fn try_as_col_major_mut(
self,
) -> Option<MatMut<'a, T, Rows, Cols, ContiguousFwd, CStride>>
pub fn try_as_col_major_mut( self, ) -> Option<MatMut<'a, T, Rows, Cols, ContiguousFwd, CStride>>
see [MatRef::try_as_col_major]
Sourcepub fn try_as_row_major_mut(
self,
) -> Option<MatMut<'a, T, Rows, Cols, RStride, ContiguousFwd>>
pub fn try_as_row_major_mut( self, ) -> Option<MatMut<'a, T, Rows, Cols, RStride, ContiguousFwd>>
see [MatRef::try_as_row_major]
Source§impl<'a, T, Rows: Shape, Cols: Shape> MatMut<'a, T, Rows, Cols>
impl<'a, T, Rows: Shape, Cols: Shape> MatMut<'a, T, Rows, Cols>
Sourcepub fn from_column_major_slice_mut(
slice: &'a mut [T],
nrows: Rows,
ncols: Cols,
) -> Selfwhere
T: Sized,
pub fn from_column_major_slice_mut(
slice: &'a mut [T],
nrows: Rows,
ncols: Cols,
) -> Selfwhere
T: Sized,
creates a MatMut from slice views over the matrix data, and the matrix
dimensions. the data is interpreted in a column-major format, so that
the first chunk of nrows values from the slices goes in the first
column of the matrix, the second chunk of nrows values goes in the
second column, and so on
§panics
the function panics if any of the following conditions are violated:
nrows * ncols == slice.len()
§example
use faer::{MatMut, mat};
let mut slice = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0_f64];
let view = MatMut::from_column_major_slice_mut(&mut slice, 3, 2);
let expected = mat![[1.0, 4.0], [2.0, 5.0], [3.0, 6.0]];
assert_eq!(expected, view);Sourcepub fn from_column_major_slice_with_stride_mut(
slice: &'a mut [T],
nrows: Rows,
ncols: Cols,
col_stride: usize,
) -> Selfwhere
T: Sized,
pub fn from_column_major_slice_with_stride_mut(
slice: &'a mut [T],
nrows: Rows,
ncols: Cols,
col_stride: usize,
) -> Selfwhere
T: Sized,
creates a MatMut from slice views over the matrix data, and the matrix
dimensions. the data is interpreted in a column-major format, where the
beginnings of two consecutive columns are separated by col_stride
elements.
Sourcepub fn from_row_major_slice_mut(
slice: &'a mut [T],
nrows: Rows,
ncols: Cols,
) -> Selfwhere
T: Sized,
pub fn from_row_major_slice_mut(
slice: &'a mut [T],
nrows: Rows,
ncols: Cols,
) -> Selfwhere
T: Sized,
creates a MatMut from slice views over the matrix data, and the matrix
dimensions. the data is interpreted in a row-major format, so that the
first chunk of ncols values from the slices goes in the first column
of the matrix, the second chunk of ncols values goes in the second
column, and so on
§panics
the function panics if any of the following conditions are violated:
nrows * ncols == slice.len()
§example
use faer::{MatMut, mat};
let mut slice = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0_f64];
let view = MatMut::from_row_major_slice_mut(&mut slice, 3, 2);
let expected = mat![[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]];
assert_eq!(expected, view);Sourcepub fn from_row_major_slice_with_stride_mut(
slice: &'a mut [T],
nrows: Rows,
ncols: Cols,
row_stride: usize,
) -> Selfwhere
T: Sized,
pub fn from_row_major_slice_with_stride_mut(
slice: &'a mut [T],
nrows: Rows,
ncols: Cols,
row_stride: usize,
) -> Selfwhere
T: Sized,
creates a MatMut from slice views over the matrix data, and the matrix
dimensions. the data is interpreted in a row-major format, where the
beginnings of two consecutive rows are separated by row_stride
elements.
Source§impl<'a, T, Dim: Shape, RStride: Stride, CStride: Stride> MatMut<'a, T, Dim, Dim, RStride, CStride>
impl<'a, T, Dim: Shape, RStride: Stride, CStride: Stride> MatMut<'a, T, Dim, Dim, RStride, CStride>
Trait Implementations§
Source§impl<T, Rows: Shape, Cols: Shape, RStride: Stride, CStride: Stride> AsMatMut for MatMut<'_, T, Rows, Cols, RStride, CStride>
impl<T, Rows: Shape, Cols: Shape, RStride: Stride, CStride: Stride> AsMatMut for MatMut<'_, T, Rows, Cols, RStride, CStride>
Source§fn as_mat_mut(&mut self) -> MatMut<'_, T, Rows, Cols>
fn as_mat_mut(&mut self) -> MatMut<'_, T, Rows, Cols>
selfSource§impl<T, Rows: Shape, Cols: Shape, RStride: Stride, CStride: Stride> AsMatRef for MatMut<'_, T, Rows, Cols, RStride, CStride>
impl<T, Rows: Shape, Cols: Shape, RStride: Stride, CStride: Stride> AsMatRef for MatMut<'_, T, Rows, Cols, RStride, CStride>
Source§impl<T: ComplexField, ViewT: Conjugate<Canonical = T>> BiLinOp<T> for MatMut<'_, ViewT>
impl<T: ComplexField, ViewT: Conjugate<Canonical = T>> BiLinOp<T> for MatMut<'_, ViewT>
Source§fn transpose_apply_scratch(&self, rhs_ncols: usize, par: ParShape) -> StackReq
fn transpose_apply_scratch(&self, rhs_ncols: usize, par: ParShape) -> StackReq
self to a matrix with rhs_ncols columnsSource§impl<T: ComplexField, ViewT: Conjugate<Canonical = T>> BiPrecond<T> for MatMut<'_, ViewT>
impl<T: ComplexField, ViewT: Conjugate<Canonical = T>> BiPrecond<T> for MatMut<'_, ViewT>
Source§fn transpose_apply_in_place_scratch(
&self,
rhs_ncols: usize,
par: ParShape,
) -> StackReq
fn transpose_apply_in_place_scratch( &self, rhs_ncols: usize, par: ParShape, ) -> StackReq
self to a matrix with rhs_ncols columns in placeSource§impl<'a, T, Rows: Shape, Cols: Shape, RStride: Stride, CStride: Stride> IntoView for MatMut<'a, T, Rows, Cols, RStride, CStride>
impl<'a, T, Rows: Shape, Cols: Shape, RStride: Stride, CStride: Stride> IntoView for MatMut<'a, T, Rows, Cols, RStride, CStride>
Source§impl<'a, T, Rows: Shape, Cols: Shape, RStride: Stride, CStride: Stride> IntoView for &'a MatMut<'_, T, Rows, Cols, RStride, CStride>
impl<'a, T, Rows: Shape, Cols: Shape, RStride: Stride, CStride: Stride> IntoView for &'a MatMut<'_, T, Rows, Cols, RStride, CStride>
Source§impl<'a, T, Rows: Shape, Cols: Shape, RStride: Stride, CStride: Stride> IntoView for &'a mut MatMut<'_, T, Rows, Cols, RStride, CStride>
impl<'a, T, Rows: Shape, Cols: Shape, RStride: Stride, CStride: Stride> IntoView for &'a mut MatMut<'_, T, Rows, Cols, RStride, CStride>
Source§impl<T: ComplexField, ViewT: Conjugate<Canonical = T>> LinOp<T> for MatMut<'_, ViewT>
impl<T: ComplexField, ViewT: Conjugate<Canonical = T>> LinOp<T> for MatMut<'_, ViewT>
Source§fn apply_scratch(&self, rhs_ncols: usize, par: ParShape) -> StackReq
fn apply_scratch(&self, rhs_ncols: usize, par: ParShape) -> StackReq
self or the conjugate
o self to a matrix with rhs_ncols columnsSource§impl<'b, T, Rows: Shape, Cols: Shape, RStride: Stride, CStride: Stride> MatIndex for MatMut<'b, T, Rows, Cols, RStride, CStride>
impl<'b, T, Rows: Shape, Cols: Shape, RStride: Stride, CStride: Stride> MatIndex for MatMut<'b, T, Rows, Cols, RStride, CStride>
type Kind = Mat
Source§type LayoutTransform = MatLayoutTransform
type LayoutTransform = MatLayoutTransform
type Slice = SliceMut<'b, T>
Source§unsafe fn get_slice_unchecked<'a>(
this: &'a mut Self,
idx: Self::Index,
n_elems: usize,
) -> <Self::Slice as SliceFamily<'a, Self::Item>>::Slice
unsafe fn get_slice_unchecked<'a>( this: &'a mut Self, idx: Self::Index, n_elems: usize, ) -> <Self::Slice as SliceFamily<'a, Self::Item>>::Slice
n_elemsSource§unsafe fn from_dyn_idx(idx: <Self::Dyn as MatIndex>::Index) -> Self::Index
unsafe fn from_dyn_idx(idx: <Self::Dyn as MatIndex>::Index) -> Self::Index
Source§unsafe fn get_unchecked(this: &mut Self, (i, j): Self::Index) -> Self::Item
unsafe fn get_unchecked(this: &mut Self, (i, j): Self::Index) -> Self::Item
Source§unsafe fn next_unchecked<'a>(
slice: &mut <Self::Slice as SliceFamily<'a, Self::Item>>::Slice,
) -> Self::Item
unsafe fn next_unchecked<'a>( slice: &mut <Self::Slice as SliceFamily<'a, Self::Item>>::Slice, ) -> Self::Item
Source§fn is_contiguous(this: &Self) -> bool
fn is_contiguous(this: &Self) -> bool
Source§fn preferred_layout(this: &Self) -> Self::LayoutTransform
fn preferred_layout(this: &Self) -> Self::LayoutTransform
Source§fn with_layout(this: Self, layout: Self::LayoutTransform) -> Self::Dyn
fn with_layout(this: Self, layout: Self::LayoutTransform) -> Self::Dyn
Source§impl<'a, 'M, 'N, T, Rs: Stride, Cs: Stride> MatIndex<<Dim<'M> as ShapeIdx>::Idx<usize>, <Dim<'N> as ShapeIdx>::Idx<usize>> for MatMut<'a, T, Dim<'M>, Dim<'N>, Rs, Cs>
impl<'a, 'M, 'N, T, Rs: Stride, Cs: Stride> MatIndex<<Dim<'M> as ShapeIdx>::Idx<usize>, <Dim<'N> as ShapeIdx>::Idx<usize>> for MatMut<'a, T, Dim<'M>, Dim<'N>, Rs, Cs>
Source§impl<'a, 'M, T, Rs: Stride, Cs: Stride> MatIndex<<Dim<'M> as ShapeIdx>::Idx<usize>, <usize as ShapeIdx>::Idx<usize>> for MatMut<'a, T, Dim<'M>, usize, Rs, Cs>
impl<'a, 'M, T, Rs: Stride, Cs: Stride> MatIndex<<Dim<'M> as ShapeIdx>::Idx<usize>, <usize as ShapeIdx>::Idx<usize>> for MatMut<'a, T, Dim<'M>, usize, Rs, Cs>
Source§impl<'a, 'N, C: Shape, T, Rs: Stride, Cs: Stride, ColRange: IntoRange<IdxInc<C>, Len<C>: 'a>> MatIndex<<Dim<'N> as ShapeIdx>::Idx<usize>, ColRange> for MatMut<'a, T, Dim<'N>, C, Rs, Cs>
impl<'a, 'N, C: Shape, T, Rs: Stride, Cs: Stride, ColRange: IntoRange<IdxInc<C>, Len<C>: 'a>> MatIndex<<Dim<'N> as ShapeIdx>::Idx<usize>, ColRange> for MatMut<'a, T, Dim<'N>, C, Rs, Cs>
Source§impl<'a, 'N, T, Rs: Stride, Cs: Stride> MatIndex<<usize as ShapeIdx>::Idx<usize>, <Dim<'N> as ShapeIdx>::Idx<usize>> for MatMut<'a, T, usize, Dim<'N>, Rs, Cs>
impl<'a, 'N, T, Rs: Stride, Cs: Stride> MatIndex<<usize as ShapeIdx>::Idx<usize>, <Dim<'N> as ShapeIdx>::Idx<usize>> for MatMut<'a, T, usize, Dim<'N>, Rs, Cs>
Source§impl<'a, T, Rs: Stride, Cs: Stride> MatIndex<<usize as ShapeIdx>::Idx<usize>, <usize as ShapeIdx>::Idx<usize>> for MatMut<'a, T, usize, usize, Rs, Cs>
impl<'a, T, Rs: Stride, Cs: Stride> MatIndex<<usize as ShapeIdx>::Idx<usize>, <usize as ShapeIdx>::Idx<usize>> for MatMut<'a, T, usize, usize, Rs, Cs>
Source§impl<'a, C: Shape, T, Rs: Stride, Cs: Stride, ColRange: IntoRange<IdxInc<C>, Len<C>: 'a>> MatIndex<<usize as ShapeIdx>::Idx<usize>, ColRange> for MatMut<'a, T, usize, C, Rs, Cs>
impl<'a, C: Shape, T, Rs: Stride, Cs: Stride, ColRange: IntoRange<IdxInc<C>, Len<C>: 'a>> MatIndex<<usize as ShapeIdx>::Idx<usize>, ColRange> for MatMut<'a, T, usize, C, Rs, Cs>
Source§impl<'a, 'N, R: Shape, T, Rs: Stride, Cs: Stride, RowRange: IntoRange<IdxInc<R>, Len<R>: 'a>> MatIndex<RowRange, <Dim<'N> as ShapeIdx>::Idx<usize>> for MatMut<'a, T, R, Dim<'N>, Rs, Cs>
impl<'a, 'N, R: Shape, T, Rs: Stride, Cs: Stride, RowRange: IntoRange<IdxInc<R>, Len<R>: 'a>> MatIndex<RowRange, <Dim<'N> as ShapeIdx>::Idx<usize>> for MatMut<'a, T, R, Dim<'N>, Rs, Cs>
Source§impl<'a, R: Shape, T, Rs: Stride, Cs: Stride, RowRange: IntoRange<IdxInc<R>, Len<R>: 'a>> MatIndex<RowRange, <usize as ShapeIdx>::Idx<usize>> for MatMut<'a, T, R, usize, Rs, Cs>
impl<'a, R: Shape, T, Rs: Stride, Cs: Stride, RowRange: IntoRange<IdxInc<R>, Len<R>: 'a>> MatIndex<RowRange, <usize as ShapeIdx>::Idx<usize>> for MatMut<'a, T, R, usize, Rs, Cs>
Source§impl<'a, R: Shape, C: Shape, T, Rs: Stride, Cs: Stride, RowRange: IntoRange<IdxInc<R>, Len<R>: 'a>, ColRange: IntoRange<IdxInc<C>, Len<C>: 'a>> MatIndex<RowRange, ColRange> for MatMut<'a, T, R, C, Rs, Cs>
impl<'a, R: Shape, C: Shape, T, Rs: Stride, Cs: Stride, RowRange: IntoRange<IdxInc<R>, Len<R>: 'a>, ColRange: IntoRange<IdxInc<C>, Len<C>: 'a>> MatIndex<RowRange, ColRange> for MatMut<'a, T, R, C, Rs, Cs>
Source§type Target = Mat<Mut<'a, T, <RowRange as IntoRange<<R as ShapeIdx>::IdxInc<usize>>>::Len<R>, <ColRange as IntoRange<<C as ShapeIdx>::IdxInc<usize>>>::Len<C>, Rs, Cs>>
type Target = Mat<Mut<'a, T, <RowRange as IntoRange<<R as ShapeIdx>::IdxInc<usize>>>::Len<R>, <ColRange as IntoRange<<C as ShapeIdx>::IdxInc<usize>>>::Len<C>, Rs, Cs>>
Source§unsafe fn get_unchecked(
this: Self,
row: RowRange,
col: ColRange,
) -> Self::Target
unsafe fn get_unchecked( this: Self, row: RowRange, col: ColRange, ) -> Self::Target
this using row and col without bound checksSource§impl<T: ComplexField, ViewT: Conjugate<Canonical = T>> Precond<T> for MatMut<'_, ViewT>
impl<T: ComplexField, ViewT: Conjugate<Canonical = T>> Precond<T> for MatMut<'_, ViewT>
Source§fn apply_in_place_scratch(&self, rhs_ncols: usize, par: ParShape) -> StackReq
fn apply_in_place_scratch(&self, rhs_ncols: usize, par: ParShape) -> StackReq
self or the conjugate
of self to a matrix with rhs_ncols columns in place