# [−][src]Trait nalgebra::base::storage::StorageMut

    pub unsafe trait StorageMut<N: Scalar, R: Dim, C: Dim = U1>: Storage<N, R, C> {
        fn ptr_mut(&mut self) -> *mut N;
        fn as_mut_slice(&mut self) -> &mut [N];

        unsafe fn get_address_unchecked_linear_mut(&mut self, i: usize) -> *mut N { ... }
        unsafe fn get_address_unchecked_mut(
            &mut self,
            irow: usize,
            icol: usize
        ) -> *mut N { ... }
        unsafe fn get_unchecked_linear_mut(&mut self, i: usize) -> &mut N { ... }
        unsafe fn get_unchecked_mut(&mut self, irow: usize, icol: usize) -> &mut N { ... }
        unsafe fn swap_unchecked_linear(&mut self, i1: usize, i2: usize) { ... }
        unsafe fn swap_unchecked(
            &mut self,
            row_col1: (usize, usize),
            row_col2: (usize, usize)
        ) { ... }
    }

Trait implemented by matrix data storage that can provide a mutable access to its elements.

Note that a mutable access does not mean that the matrix owns its data. For example, a mutable matrix slice can provide mutable access to its elements even if it does not own its data (it contains only an internal reference to them).

## Required methods

### `fn ptr_mut(&mut self) -> *mut N`

The matrix mutable data pointer.

### `fn as_mut_slice(&mut self) -> &mut [N]`

Retrieves the mutable data buffer as a contiguous slice.

Matrix components may not be contiguous, depending on its strides.

Loading content...

## Provided methods

### `unsafe fn get_address_unchecked_linear_mut(&mut self, i: usize) -> *mut N`

Gets the mutable address of the i-th matrix component without performing bound-checking.

### `unsafe fn get_address_unchecked_mut(
&mut self,
irow: usize,
icol: usize
) -> *mut N`

Gets the mutable address of the i-th matrix component without performing bound-checking.

### `unsafe fn get_unchecked_linear_mut(&mut self, i: usize) -> &mut N`

Retrieves a mutable reference to the i-th element without bound-checking.

### `unsafe fn get_unchecked_mut(&mut self, irow: usize, icol: usize) -> &mut N`

Retrieves a mutable reference to the element at `(irow, icol)` without bound-checking.

### `unsafe fn swap_unchecked_linear(&mut self, i1: usize, i2: usize)`

Swaps two elements using their linear index without bound-checking.

### `unsafe fn swap_unchecked(
&mut self,
row_col1: (usize, usize),
row_col2: (usize, usize)
)`

Swaps two elements without bound-checking.

Loading content...

## Implementors

### `impl<'a, N: Scalar, R: Dim, C: Dim, RStride: Dim, CStride: Dim> StorageMut<N, R, C> for SliceStorageMut<'a, N, R, C, RStride, CStride>`[src]

#### `fn ptr_mut(&mut self) -> *mut N`[src]

#### `fn as_mut_slice(&mut self) -> &mut [N]`[src]

### `impl<N, R, C> StorageMut<N, R, C> for ArrayStorage<N, R, C> where
N: Scalar,
R: DimName,
C: DimName,
R::Value: Mul<C::Value>,
Prod<R::Value, C::Value>: ArrayLength<N>,
DefaultAllocator: Allocator<N, R, C, Buffer = Self>,` [src]

#### `fn ptr_mut(&mut self) -> *mut N`[src]

#### `fn as_mut_slice(&mut self) -> &mut [N]`[src]

### `impl<N: Scalar, C: Dim> StorageMut<N, Dynamic, C> for VecStorage<N, Dynamic, C> where
DefaultAllocator: Allocator<N, Dynamic, C, Buffer = Self>,` [src]

#### `fn ptr_mut(&mut self) -> *mut N`[src]

#### `fn as_mut_slice(&mut self) -> &mut [N]`[src]

### `impl<N: Scalar, R: DimName> StorageMut<N, R, Dynamic> for VecStorage<N, R, Dynamic> where
DefaultAllocator: Allocator<N, R, Dynamic, Buffer = Self>,` [src]

#### `fn ptr_mut(&mut self) -> *mut N`[src]

#### `fn as_mut_slice(&mut self) -> &mut [N]`[src]

Loading content...

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g., `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g., `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g., `str,u8` or `String,struct:Vec,test`)