pub trait SplitMut<K, V> {
// Required methods
fn get1_mut(&mut self, k1: K) -> Option<&mut V>;
unsafe fn get1_unchecked_mut(&mut self, k1: K) -> &mut V;
// Provided methods
fn get2_mut(
&mut self,
k1: K,
k2: K,
) -> (Result<&mut V, SplitMutError>, Result<&mut V, SplitMutError>) { ... }
fn get3_mut(
&mut self,
k1: K,
k2: K,
k3: K,
) -> (Result<&mut V, SplitMutError>, Result<&mut V, SplitMutError>, Result<&mut V, SplitMutError>) { ... }
fn get4_mut(
&mut self,
k1: K,
k2: K,
k3: K,
k4: K,
) -> (Result<&mut V, SplitMutError>, Result<&mut V, SplitMutError>, Result<&mut V, SplitMutError>, Result<&mut V, SplitMutError>) { ... }
unsafe fn get2_unchecked_mut(&mut self, k1: K, k2: K) -> (&mut V, &mut V) { ... }
unsafe fn get3_unchecked_mut(
&mut self,
k1: K,
k2: K,
k3: K,
) -> (&mut V, &mut V, &mut V) { ... }
unsafe fn get4_unchecked_mut(
&mut self,
k1: K,
k2: K,
k3: K,
k4: K,
) -> (&mut V, &mut V, &mut V, &mut V) { ... }
}Expand description
Just add use splitmut::SplitMut; to have these methods working on
mutable slices, Vec, VecDeque, HashMap and BTreeMap.
In case you want to implement SplitMut for your own collection, just
implement get1_mut and get1_unchecked_mut and the other methods will
be provided for you.
Required Methods§
sourceunsafe fn get1_unchecked_mut(&mut self, k1: K) -> &mut V
unsafe fn get1_unchecked_mut(&mut self, k1: K) -> &mut V
Wrapper for get_unchecked_mut, used internally.
§Undefined behaviour
It is undefined behaviour to call this with a key that does not correspond to a value. You have been warned.
Provided Methods§
sourcefn get2_mut(
&mut self,
k1: K,
k2: K,
) -> (Result<&mut V, SplitMutError>, Result<&mut V, SplitMutError>)
fn get2_mut( &mut self, k1: K, k2: K, ) -> (Result<&mut V, SplitMutError>, Result<&mut V, SplitMutError>)
Returns two mutable references to two distinct values within the same collection.
sourcefn get3_mut(
&mut self,
k1: K,
k2: K,
k3: K,
) -> (Result<&mut V, SplitMutError>, Result<&mut V, SplitMutError>, Result<&mut V, SplitMutError>)
fn get3_mut( &mut self, k1: K, k2: K, k3: K, ) -> (Result<&mut V, SplitMutError>, Result<&mut V, SplitMutError>, Result<&mut V, SplitMutError>)
Returns three mutable references to three distinct values within the same collection.
sourcefn get4_mut(
&mut self,
k1: K,
k2: K,
k3: K,
k4: K,
) -> (Result<&mut V, SplitMutError>, Result<&mut V, SplitMutError>, Result<&mut V, SplitMutError>, Result<&mut V, SplitMutError>)
fn get4_mut( &mut self, k1: K, k2: K, k3: K, k4: K, ) -> (Result<&mut V, SplitMutError>, Result<&mut V, SplitMutError>, Result<&mut V, SplitMutError>, Result<&mut V, SplitMutError>)
Returns four mutable references to four distinct values within the same collection.
sourceunsafe fn get2_unchecked_mut(&mut self, k1: K, k2: K) -> (&mut V, &mut V)
unsafe fn get2_unchecked_mut(&mut self, k1: K, k2: K) -> (&mut V, &mut V)
Returns two mutable references to two distinct values within the same collection.
§Undefined behaviour
It is undefined behaviour to call this with a key that does not correspond to a value, or with keys pointing to the same value. You have been warned.
sourceunsafe fn get3_unchecked_mut(
&mut self,
k1: K,
k2: K,
k3: K,
) -> (&mut V, &mut V, &mut V)
unsafe fn get3_unchecked_mut( &mut self, k1: K, k2: K, k3: K, ) -> (&mut V, &mut V, &mut V)
Returns three mutable references to three distinct values within the same collection.
§Undefined behaviour
It is undefined behaviour to call this with a key that does not correspond to a value, or with any two keys pointing to the same value. You have been warned.
sourceunsafe fn get4_unchecked_mut(
&mut self,
k1: K,
k2: K,
k3: K,
k4: K,
) -> (&mut V, &mut V, &mut V, &mut V)
unsafe fn get4_unchecked_mut( &mut self, k1: K, k2: K, k3: K, k4: K, ) -> (&mut V, &mut V, &mut V, &mut V)
Returns four mutable references to four distinct values within the same collection.
§Undefined behaviour
It is undefined behaviour to call this with a key that does not correspond to a value, or with any two keys pointing to the same value. You have been warned.