pub struct RawVacantEntryMut<'a, K, V, S, A = Global>where
A: Allocator,{ /* private fields */ }Expand description
A view into a vacant entry in a HashMap.
It is part of the RawEntryMut enum.
§Examples
use core::hash::{BuildHasher, Hash};
use rune::alloc::hash_map::{RawEntryMut, RawVacantEntryMut};
use rune::alloc::HashMap;
let mut map = HashMap::<&str, i32>::new();
fn compute_hash<K, S>(hash_builder: &S, key: &K) -> u64
where
K: Hash + ?Sized,
S: BuildHasher,
{
use core::hash::Hasher;
let mut state = hash_builder.build_hasher();
key.hash(&mut state);
state.finish()
}
let raw_v: RawVacantEntryMut<_, _, _> = match map.raw_entry_mut().from_key(&"a") {
RawEntryMut::Vacant(view) => view,
RawEntryMut::Occupied(_) => unreachable!(),
};
raw_v.try_insert("a", 10)?;
assert!(map[&"a"] == 10 && map.len() == 1);
// Nonexistent key (insert and update)
let hash = compute_hash(map.hasher(), &"b");
match map.raw_entry_mut().from_key_hashed_nocheck(hash, &"b") {
RawEntryMut::Occupied(_) => unreachable!(),
RawEntryMut::Vacant(view) => {
let (k, value) = view.try_insert("b", 2)?;
assert_eq!((*k, *value), ("b", 2));
*value = 20;
}
}
assert!(map[&"b"] == 20 && map.len() == 2);
let hash = compute_hash(map.hasher(), &"c");
match map.raw_entry_mut().from_hash(hash, |q| *q == "c") {
RawEntryMut::Occupied(_) => unreachable!(),
RawEntryMut::Vacant(view) => {
assert_eq!(view.try_insert("c", 30)?, (&mut "c", &mut 30));
}
}
assert!(map[&"c"] == 30 && map.len() == 3);Auto Trait Implementations§
impl<'a, K, V, S, A> Freeze for RawVacantEntryMut<'a, K, V, S, A>
impl<'a, K, V, S, A> RefUnwindSafe for RawVacantEntryMut<'a, K, V, S, A>
impl<'a, K, V, S, A> Send for RawVacantEntryMut<'a, K, V, S, A>
impl<'a, K, V, S, A> Sync for RawVacantEntryMut<'a, K, V, S, A>
impl<'a, K, V, S, A> Unpin for RawVacantEntryMut<'a, K, V, S, A>
impl<'a, K, V, S, A = Global> !UnwindSafe for RawVacantEntryMut<'a, K, V, S, A>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more