Skip to main content

GetManyMutExt

Trait GetManyMutExt 

Source
pub unsafe trait GetManyMutExt {
    type Element;

    // Required methods
    fn get_many_mut<const N: usize>(
        &mut self,
        indices: [usize; N],
    ) -> Result<[&mut Self::Element; N], GetManyMutError<N>>;
    unsafe fn get_many_unchecked_mut<const N: usize>(
        &mut self,
        indices: [usize; N],
    ) -> [&mut Self::Element; N];
}
Expand description

Extension trait for get_many_mut.

Required Associated Types§

Required Methods§

Source

fn get_many_mut<const N: usize>( &mut self, indices: [usize; N], ) -> Result<[&mut Self::Element; N], GetManyMutError<N>>

Returns mutable references to many indices at once.

Returns an error if any index is out-of-bounds, or if the same index was passed more than once.

§Examples
use get_many_mut::GetManyMutExt;

let v = &mut [1, 2, 3];
if let Ok([a, b]) = v.get_many_mut([0, 2]) {
    *a = 413;
    *b = 612;
}
assert_eq!(v, &[413, 2, 612]);
use get_many_mut::GetManyMutExt;

let v = &mut [1, 2, 3];
v.get_many_mut([0, 2, 0]).unwrap();
Source

unsafe fn get_many_unchecked_mut<const N: usize>( &mut self, indices: [usize; N], ) -> [&mut Self::Element; N]

Returns mutable references to many indices at once, without doing any checks.

For a safe alternative see get_many_mut.

§Safety

Calling this method with overlapping or out-of-bounds indices is undefined behavior even if the resulting references are not used.

§Examples
use get_many_mut::GetManyMutExt;

let x = &mut [1, 2, 4];

unsafe {
    let [a, b] = x.get_many_unchecked_mut([0, 2]);
    *a *= 10;
    *b *= 100;
}
assert_eq!(x, &[10, 2, 400]);

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<T, const M: usize> GetManyMutExt for [T; M]

Source§

type Element = T

Source§

fn get_many_mut<const N: usize>( &mut self, indices: [usize; N], ) -> Result<[&mut Self::Element; N], GetManyMutError<N>>

Source§

unsafe fn get_many_unchecked_mut<const N: usize>( &mut self, indices: [usize; N], ) -> [&mut T; N]

Source§

impl<T> GetManyMutExt for [T]

Source§

type Element = T

Source§

fn get_many_mut<const N: usize>( &mut self, indices: [usize; N], ) -> Result<[&mut Self::Element; N], GetManyMutError<N>>

Source§

unsafe fn get_many_unchecked_mut<const N: usize>( &mut self, indices: [usize; N], ) -> [&mut T; N]

Implementors§