Struct VacantEntryRef
pub struct VacantEntryRef<'map, 'key, K, Q: ?Sized, V, S, A: Allocator = Global> { /* private fields */ }
A view into a vacant entry in a HashMap.
It is part of the EntryRef enum.
Examples
use ;
let mut map = new;
let entry_v: = match map.entry_ref ;
entry_v.insert;
assert!;
// Nonexistent key (insert and update)
match map.entry_ref
assert!;
Implementations
impl<'map, 'key, K, Q: ?Sized, V, S, A: Allocator> VacantEntryRef<'map, 'key, K, Q, V, S, A>
fn key(&self) -> &'key QGets a reference to the key that would be used when inserting a value through the
VacantEntryRef.Examples
use HashMap; let mut map: = new; let key: &str = "poneyland"; assert_eq!;fn insert(self, value: V) -> &'map mut V where K: Hash, Q: ToOwned<Owned = K>, S: BuildHasher,Sets the value of the entry with the
VacantEntryRef's key, and returns a mutable reference to it.Examples
use HashMap; use EntryRef; let mut map: = new; let key: &str = "poneyland"; if let Vacant = map.entry_ref assert_eq!;fn insert_with_key(self, key: K, value: V) -> &'map mut V where K: Hash, Q: Equivalent<K>, S: BuildHasher,Sets the key and value of the entry and returns a mutable reference to the inserted value.
Unlike
VacantEntryRef::insert, this method allows the key to be explicitly specified, which is useful for key types that don't implementToOwned.Panics
This method panics if
keyis not equivalent to the key used to create theVacantEntryRef.Example
use EntryRef; use HashMap; let mut map = new; let k = ; let v = match map.entry_ref ; assert_eq!;unsafe fn insert_with_key_unchecked(self, key: K, value: V) -> &'map mut V where K: Hash, S: BuildHasher,Sets the key and value of the entry and returns a mutable reference to the inserted value, without checking the equivalence of the key.
See
insert_with_keyfor more information.Safety
This operation is safe if the keys are equivalent.
Additionally, this operation (and following operations) are guaranteed to not violate memory safety.
However this operation is still unsafe because the resulting
HashMapmay be passed to unsafe code which does expect the map to behave correctly. If the map has keys at unexpected positions inside it, future operations may panic, loop forever, or return unexpected results, potentially violating memory safety.Example
use EntryRef; use HashMap; let mut map = new; let k = ; let v = match map.entry_ref ; assert_eq!;fn insert_entry(self, value: V) -> OccupiedEntry<'map, K, V, S, A> where K: Hash, Q: ToOwned<Owned = K>, S: BuildHasher,Sets the value of the entry with the
VacantEntryRef's key, and returns anOccupiedEntry.Examples
use HashMap; use EntryRef; let mut map: = new; if let Vacant = map.entry_reffn insert_entry_with_key(self, key: K, value: V) -> OccupiedEntry<'map, K, V, S, A> where K: Hash, Q: Equivalent<K>, S: BuildHasher,Sets the key and value of the entry and returns an
OccupiedEntry.Unlike
VacantEntryRef::insert_entry, this method allows the key to be explicitly specified, which is useful for key types that don't implementToOwned.Panics
This method panics if
keyis not equivalent to the key used to create theVacantEntryRef.Example
use EntryRef; use HashMap; let mut map = new; let k = ; let r = match map.entry_ref ; assert_eq!;unsafe fn insert_entry_with_key_unchecked(self, key: K, value: V) -> OccupiedEntry<'map, K, V, S, A> where K: Hash, S: BuildHasher,Sets the key and value of the entry and returns an
OccupiedEntry, without checking the equivalence of the key.See
insert_entry_with_keyfor more information.Safety
This operation is safe if the keys are equivalent.
Additionally, this operation (and following operations) are guaranteed to not violate memory safety.
However this operation is still unsafe because the resulting
HashMapmay be passed to unsafe code which does expect the map to behave correctly. If the map has keys at unexpected positions inside it, future operations may panic, loop forever, or return unexpected results, potentially violating memory safety.Example
use EntryRef; use HashMap; let mut map = new; let k = ; let r = match map.entry_ref ; assert_eq!;fn into_map(self) -> &'map mut HashMap<K, V, S, A>Converts the
VacantEntryRefinto a mutable reference to the underlying map.
Trait Implementations
impl<K, Q, V, S, A> Debug for VacantEntryRef<'_, '_, K, Q, V, S, A>
where
K: Borrow<Q>,
Q: Debug + ?Sized,
A: Allocator,
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Auto Trait Implementations
impl<'map, 'key, K, Q, V, S, A = Global> !UnwindSafe for VacantEntryRef<'map, 'key, K, Q, V, S, A>
impl<'map, 'key, K, Q, V, S, A> Freeze for VacantEntryRef<'map, 'key, K, Q, V, S, A>
where
&'key Q: Freeze,
&'map mut HashMap<K, V, S, A>: Freeze,
Q: ?Sized,
impl<'map, 'key, K, Q, V, S, A> RefUnwindSafe for VacantEntryRef<'map, 'key, K, Q, V, S, A>
where
&'key Q: RefUnwindSafe,
&'map mut HashMap<K, V, S, A>: RefUnwindSafe,
Q: ?Sized,
impl<'map, 'key, K, Q, V, S, A> Send for VacantEntryRef<'map, 'key, K, Q, V, S, A>
where
&'key Q: Send,
&'map mut HashMap<K, V, S, A>: Send,
Q: ?Sized,
impl<'map, 'key, K, Q, V, S, A> Sync for VacantEntryRef<'map, 'key, K, Q, V, S, A>
where
&'key Q: Sync,
&'map mut HashMap<K, V, S, A>: Sync,
Q: ?Sized,
impl<'map, 'key, K, Q, V, S, A> Unpin for VacantEntryRef<'map, 'key, K, Q, V, S, A>
where
&'key Q: Unpin,
&'map mut HashMap<K, V, S, A>: Unpin,
Q: ?Sized,
impl<'map, 'key, K, Q, V, S, A> UnsafeUnpin for VacantEntryRef<'map, 'key, K, Q, V, S, A>
where
&'key Q: UnsafeUnpin,
&'map mut HashMap<K, V, S, A>: UnsafeUnpin,
Q: ?Sized,
Blanket Implementations
impl<T> Any for VacantEntryRef<'map, 'key, K, Q, V, S, A>
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for VacantEntryRef<'map, 'key, K, Q, V, S, A>
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for VacantEntryRef<'map, 'key, K, Q, V, S, A>
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> From<T> for VacantEntryRef<'map, 'key, K, Q, V, S, A>
fn from(t: T) -> TReturns the argument unchanged.
impl<T, U> Into<U> for VacantEntryRef<'map, 'key, K, Q, V, S, A>
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for VacantEntryRef<'map, 'key, K, Q, V, S, A>
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for VacantEntryRef<'map, 'key, K, Q, V, S, A>
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>