Struct IndexedEntry

pub struct IndexedEntry<'a, K, V> { /* private fields */ }

A view into an occupied entry in an [IndexMap][crate::IndexMap] obtained by index.

This struct is created from the [get_index_entry][crate::IndexMap::get_index_entry] method.

Implementations

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

fn index(&self) -> usize

Return the index of the key-value pair

fn key(&self) -> &K

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

fn get(&self) -> &V

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

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][Self::into_mut].

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

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

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.

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][alloc::vec::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).

fn shift_remove_entry(self) -> (K, V)

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

Like [Vec::remove][alloc::vec::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).

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][alloc::vec::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).

fn shift_remove(self) -> V

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

Like [Vec::remove][alloc::vec::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).

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]crate::IndexMap::move_index coming from the current [.index()][Self::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).

fn swap_indices(self, other: usize)

Swaps the position of entry with another.

This is equivalent to [IndexMap::swap_indices]crate::IndexMap::swap_indices with the current [.index()][Self::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

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

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

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

type Key = K;
fn key_mut(&mut self) -> &mut Self::Key

impl<K: Debug, V: Debug> Debug for IndexedEntry<'_, K, V>

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

Auto Trait Implementations

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

impl<'a, K, V> Freeze for IndexedEntry<'a, K, V> where &'a mut Core<K, V>: Freeze,

impl<'a, K, V> RefUnwindSafe for IndexedEntry<'a, K, V> where &'a mut Core<K, V>: RefUnwindSafe,

impl<'a, K, V> Send for IndexedEntry<'a, K, V> where &'a mut Core<K, V>: Send,

impl<'a, K, V> Sync for IndexedEntry<'a, K, V> where &'a mut Core<K, V>: Sync,

impl<'a, K, V> Unpin for IndexedEntry<'a, K, V> where &'a mut Core<K, V>: Unpin,

impl<'a, K, V> UnsafeUnpin for IndexedEntry<'a, K, V> where &'a mut Core<K, V>: UnsafeUnpin,

Blanket Implementations

impl<T> Any for IndexedEntry<'a, K, V> where T: 'static + ?Sized,

fn type_id(&self) -> TypeId

impl<T> Borrow<T> for IndexedEntry<'a, K, V> where T: ?Sized,

fn borrow(&self) -> &T

impl<T> BorrowMut<T> for IndexedEntry<'a, K, V> where T: ?Sized,

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

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

fn from(t: T) -> T

Returns the argument unchanged.

impl<T, U> Into<U> for IndexedEntry<'a, K, V> where U: From<T>,

fn into(self) -> U

Calls U::from(self).

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

impl<T, U> TryFrom<U> for IndexedEntry<'a, K, V> where U: Into<T>,

type Error = never;
fn try_from(value: U) -> Result<T, never>

impl<T, U> TryInto<U> for IndexedEntry<'a, K, V> where U: TryFrom<T>,

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