pub trait Modify<K, Q: ?Sized = K>: Containerwhere
K: Borrow<Q>,{
// Required method
fn modify<F>(&mut self, key: &Q, f: F)
where F: FnOnce(&mut Self::Value);
}Expand description
Modify the value under key with a closure.
This is useful if something always has to be done before or after the modification to maintain an invariant.
§Examples
use maplike::ops::{Get, Modify};
use std::collections::{BTreeMap, HashMap};
// Works for `Vec`.
let mut vec = vec![1.0, 2.0, 3.0];
vec.modify(&1, |value| *value *= 10.0);
assert_eq!(vec.get(&1), Some(&20.0));
// Works for `[T; N]`.
let mut arr = [1.0, 2.0, 3.0];
arr.modify(&1, |value| *value *= 10.0);
assert_eq!(arr.get(&1), Some(&20.0));
// Works for `HashMap`.
let mut hash_map = HashMap::from([(1, 2.0), (2, 3.0)]);
hash_map.modify(&1, |value| *value *= 10.0);
assert_eq!(hash_map.get(&1), Some(&20.0));
// Works for `BTreeMap`.
let mut btree_map = BTreeMap::from([(1, 2.0), (2, 3.0)]);
btree_map.modify(&1, |value| *value *= 10.0);
assert_eq!(btree_map.get(&1), Some(&20.0));Required Methods§
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<K, Q: Eq + Hash + ?Sized, V> Modify<K, Q> for HashMap<K, V>
Available on crate feature std only.
impl<K, Q: Eq + Hash + ?Sized, V> Modify<K, Q> for HashMap<K, V>
Available on crate feature
std only.Source§impl<K, Q: Eq + Hash + ?Sized, V> Modify<K, Q> for IndexMap<K, V>
Available on crate feature indexmap only.
impl<K, Q: Eq + Hash + ?Sized, V> Modify<K, Q> for IndexMap<K, V>
Available on crate feature
indexmap only.Source§impl<K, Q: Ord + ?Sized, V> Modify<K, Q> for BTreeMap<K, V>
Available on crate feature alloc only.
impl<K, Q: Ord + ?Sized, V> Modify<K, Q> for BTreeMap<K, V>
Available on crate feature
alloc only.Source§impl<T, const CAP: usize> Modify<usize> for ArrayVec<T, CAP>
Available on crate feature arrayvec only.
impl<T, const CAP: usize> Modify<usize> for ArrayVec<T, CAP>
Available on crate feature
arrayvec only.Source§impl<V, C: Core<V>> Modify<usize> for StableVecFacade<V, C>
Available on crate feature stable-vec only.
impl<V, C: Core<V>> Modify<usize> for StableVecFacade<V, C>
Available on crate feature
stable-vec only.