indexmap::map

Struct OccupiedEntry

source
pub struct OccupiedEntry<'a, K, V> { /* private fields */ }
Expand description

A view into an occupied entry in an IndexMap. It is part of the Entry enum.

Implementations§

source§

impl<'a, K, V> OccupiedEntry<'a, K, V>

source

pub fn index(&self) -> usize

Return the index of the key-value pair

source

pub fn key(&self) -> &K

Gets a reference to the entry’s key in the map.

Note that this is not the key that was used to find the entry. There may be an observable difference if the key type has any distinguishing features outside of Hash and Eq, like extra fields or the memory address of an allocation.

source

pub fn get(&self) -> &V

Gets a reference to the entry’s value in the map.

source

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 Entry value, see into_mut.

source

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.

source

pub fn insert(&mut self, value: V) -> V

Sets the value of the entry to value, and returns the entry’s old value.

source

pub fn remove(self) -> V

👎Deprecated: remove disrupts the map order – use swap_remove or shift_remove for explicit behavior.

Remove the key, value pair stored in the map for this entry, and return the value.

NOTE: This is equivalent to .swap_remove(), replacing this entry’s position with the last element, and it is deprecated in favor of calling that explicitly. If you need to preserve the relative order of the keys in the map, use .shift_remove() instead.

source

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).

source

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).

source

pub fn remove_entry(self) -> (K, V)

👎Deprecated: remove_entry disrupts the map order – use swap_remove_entry or shift_remove_entry for explicit behavior.

Remove and return the key, value pair stored in the map for this entry

NOTE: This is equivalent to .swap_remove_entry(), replacing this entry’s position with the last element, and it is deprecated in favor of calling that explicitly. If you need to preserve the relative order of the keys in the map, use .shift_remove_entry() instead.

source

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).

source

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).

source

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).

source

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<K: Debug, V: Debug> Debug for OccupiedEntry<'_, K, V>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a, K, V> From<IndexedEntry<'a, K, V>> for OccupiedEntry<'a, K, V>

source§

fn from(other: IndexedEntry<'a, K, V>) -> Self

Converts to this type from the input type.
source§

impl<'a, K, V> From<OccupiedEntry<'a, K, V>> for IndexedEntry<'a, K, V>

source§

fn from(other: OccupiedEntry<'a, K, V>) -> Self

Converts to this type from the input type.
source§

impl<K, V> MutableEntryKey for OccupiedEntry<'_, K, V>

Opt-in mutable access to OccupiedEntry keys.

See MutableEntryKey for more information.

source§

type Key = K

source§

fn key_mut(&mut self) -> &mut Self::Key

Gets a mutable reference to the entry’s key, either within the map if occupied, or else the new key that was used to find the entry.

Auto Trait Implementations§

§

impl<'a, K, V> Freeze for OccupiedEntry<'a, K, V>

§

impl<'a, K, V> RefUnwindSafe for OccupiedEntry<'a, K, V>

§

impl<'a, K, V> Send for OccupiedEntry<'a, K, V>
where K: Send, V: Send,

§

impl<'a, K, V> Sync for OccupiedEntry<'a, K, V>
where K: Sync, V: Sync,

§

impl<'a, K, V> Unpin for OccupiedEntry<'a, K, V>

§

impl<'a, K, V> !UnwindSafe for OccupiedEntry<'a, K, V>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.