Struct slotmap::secondary::OccupiedEntry [−][src]
pub struct OccupiedEntry<'a, K: Key, V> { /* fields omitted */ }
Expand description
A view into a occupied entry in a SecondaryMap
. It is part of the
Entry
enum.
Implementations
Returns this entry’s key.
Examples
let mut sm = SlotMap::new(); let mut sec = SecondaryMap::new(); let k = sm.insert(1); sec.insert(k, 10); assert_eq!(sec.entry(k).unwrap().key(), k);
Removes the entry from the slot map and returns the key and value.
Examples
let mut sm = SlotMap::new(); let mut sec = SecondaryMap::new(); let foo = sm.insert("foo"); sec.entry(foo).unwrap().or_insert("bar"); if let Some(Entry::Occupied(o)) = sec.entry(foo) { assert_eq!(o.remove_entry(), (foo, "bar")); } assert_eq!(sec.contains_key(foo), false);
Gets a reference to the value in the entry.
Examples
let mut sm = SlotMap::new(); let mut sec = SecondaryMap::new(); let k = sm.insert(1); sec.insert(k, 10); if let Entry::Occupied(o) = sec.entry(k).unwrap() { assert_eq!(*o.get(), 10); }
Gets a mutable reference to the value in the entry.
If you need a reference to the OccupiedEntry
which may outlive the
destruction of the Entry
value, see into_mut
.
Examples
let mut sm = SlotMap::new(); let mut sec = SecondaryMap::new(); let k = sm.insert(1); sec.insert(k, 10); if let Entry::Occupied(mut o) = sec.entry(k).unwrap() { *o.get_mut() = 20; } assert_eq!(sec[k], 20);
Converts the OccupiedEntry
into a mutable reference to the value in
the entry with a lifetime bound to the map itself.
If you need multiple references to the OccupiedEntry
, see
get_mut
.
Examples
let mut sm = SlotMap::new(); let mut sec = SecondaryMap::new(); let k = sm.insert(0); sec.insert(k, 0); let r; if let Entry::Occupied(o) = sec.entry(k).unwrap() { r = o.into_mut(); // v outlives the entry. } else { r = sm.get_mut(k).unwrap(); } *r = 1; assert_eq!((sm[k], sec[k]), (0, 1));
Sets the value of the entry, and returns the entry’s old value.
Examples
let mut sm = SlotMap::new(); let mut sec = SecondaryMap::new(); let k = sm.insert(1); sec.insert(k, 10); if let Entry::Occupied(mut o) = sec.entry(k).unwrap() { let v = o.insert(20); assert_eq!(v, 10); assert_eq!(*o.get(), 20); }
Takes the value out of the entry, and returns it.
Examples
let mut sm = SlotMap::new(); let mut sec = SecondaryMap::new(); let k = sm.insert(1); sec.insert(k, 10); if let Entry::Occupied(mut o) = sec.entry(k).unwrap() { assert_eq!(o.remove(), 10); assert_eq!(sec.contains_key(k), false); }
Trait Implementations
Auto Trait Implementations
impl<'a, K, V> RefUnwindSafe for OccupiedEntry<'a, K, V> where
V: RefUnwindSafe,
impl<'a, K, V> Send for OccupiedEntry<'a, K, V> where
V: Send,
impl<'a, K, V> Sync for OccupiedEntry<'a, K, V> where
V: Sync,
impl<'a, K, V> Unpin for OccupiedEntry<'a, K, V>
impl<'a, K, V> !UnwindSafe for OccupiedEntry<'a, K, V>