pub struct IndexedEntry<'a, K, V> {
map: &'a mut IndexMapCore<K, V>,
index: usize,
}
Expand description
A view into an occupied entry in an IndexMap
obtained by index.
This struct
is created from the get_index_entry
method.
Fields§
§map: &'a mut IndexMapCore<K, V>
§index: usize
Implementations§
source§impl<'a, K, V> IndexedEntry<'a, K, V>
impl<'a, K, V> IndexedEntry<'a, K, V>
pub(crate) fn new(map: &'a mut IndexMapCore<K, V>, index: usize) -> Self
pub(crate) fn key_mut(&mut self) -> &mut K
sourcepub fn get_mut(&mut self) -> &mut V
pub fn get_mut(&mut self) -> &mut V
Gets a mutable reference to the entry’s value in the map.
If you need a reference which may outlive the destruction of the
IndexedEntry
value, see into_mut
.
sourcepub fn insert(&mut self, value: V) -> V
pub fn insert(&mut self, value: V) -> V
Sets the value of the entry to value
, and returns the entry’s old value.
sourcepub fn into_mut(self) -> &'a mut V
pub fn into_mut(self) -> &'a mut V
Converts into a mutable reference to the entry’s value in the map, with a lifetime bound to the map itself.
sourcepub fn swap_remove_entry(self) -> (K, V)
pub fn swap_remove_entry(self) -> (K, V)
Remove and return the key, value pair stored in the map for this entry
Like Vec::swap_remove
, the pair is removed by swapping it with
the last element of the map and popping it off.
This perturbs the position of what used to be the last element!
Computes in O(1) time (average).
sourcepub fn shift_remove_entry(self) -> (K, V)
pub fn shift_remove_entry(self) -> (K, V)
Remove and return the key, value pair stored in the map for this entry
Like Vec::remove
, the pair is removed by shifting all of the
elements that follow it, preserving their relative order.
This perturbs the index of all of those elements!
Computes in O(n) time (average).
sourcepub fn swap_remove(self) -> V
pub fn swap_remove(self) -> V
Remove the key, value pair stored in the map for this entry, and return the value.
Like Vec::swap_remove
, the pair is removed by swapping it with
the last element of the map and popping it off.
This perturbs the position of what used to be the last element!
Computes in O(1) time (average).
sourcepub fn shift_remove(self) -> V
pub fn shift_remove(self) -> V
Remove the key, value pair stored in the map for this entry, and return the value.
Like Vec::remove
, the pair is removed by shifting all of the
elements that follow it, preserving their relative order.
This perturbs the index of all of those elements!
Computes in O(n) time (average).
sourcepub fn move_index(self, to: usize)
pub fn move_index(self, to: usize)
Moves the position of the entry to a new index by shifting all other entries in-between.
This is equivalent to IndexMap::move_index
coming from
the current .index()
.
- If
self.index() < to
, the other pairs will shift down while the targeted pair moves up. - If
self.index() > to
, the other pairs will shift up while the targeted pair moves down.
Panics if to
is out of bounds.
Computes in O(n) time (average).
sourcepub fn swap_indices(self, other: usize)
pub fn swap_indices(self, other: usize)
Swaps the position of entry with another.
This is equivalent to IndexMap::swap_indices
with the current .index()
as one of the two being swapped.
Panics if the other
index is out of bounds.
Computes in O(1) time (average).
Trait Implementations§
source§impl<'a, K, V> From<IndexedEntry<'a, K, V>> for OccupiedEntry<'a, K, V>
impl<'a, K, V> From<IndexedEntry<'a, K, V>> for OccupiedEntry<'a, K, V>
source§fn from(entry: IndexedEntry<'a, K, V>) -> Self
fn from(entry: IndexedEntry<'a, K, V>) -> Self
source§impl<'a, K, V> From<OccupiedEntry<'a, K, V>> for IndexedEntry<'a, K, V>
impl<'a, K, V> From<OccupiedEntry<'a, K, V>> for IndexedEntry<'a, K, V>
source§fn from(entry: OccupiedEntry<'a, K, V>) -> Self
fn from(entry: OccupiedEntry<'a, K, V>) -> Self
source§impl<K, V> MutableEntryKey for IndexedEntry<'_, K, V>
impl<K, V> MutableEntryKey for IndexedEntry<'_, K, V>
Opt-in mutable access to IndexedEntry
keys.
See MutableEntryKey
for more information.