SplitMut

A Rust library for safely retreiving multiple mutable values within the same collection.

API Documentation Crates.io

get2_mut, get3_mut and get4_mut return a tuple or 2, 3 or 4 values, each one of them being one of:

Add use splitmut::SplitMut to your code have these functions implemented for mutable slices, Vec, VecDeque, HashMap and BTreeMap.

Example

```rust extern crate splitmut;

use std::collections::HashMap; use splitmut::{SplitMut, SplitMutError};

// Create a hashmap let mut h = HashMap::new(); h.insert(1, "Hello"); h.insert(2, "world");

// Swap two values easily { let (m1, m2) = h.get2mut(&1, &2); std::mem::swap(m1.unwrap(), m2.unwrap()); } asserteq!(h.get(&1), Some(&"world")); assert_eq!(h.get(&2), Some(&"Hello"));

// Show error handling let (m0, m1a, m1b) = h.get3mut(&0, &1, &1); // No value for the key "0" asserteq!(m0, Err(SplitMutError::NoValue)); // First value for the key "1" is returned successfully asserteq!(m1a, Ok(&mut "world")); // Second value for the key "1" returns an error asserteq!(m1b, Err(SplitMutError::SameValue)); ```