Skip to main content

Entry

Enum Entry 

1.0.0 ยท Source
pub enum Entry<'a, K: 'a, V: 'a, A: Allocator = Global> {
    Occupied(OccupiedEntry<'a, K, V, A>),
    Vacant(VacantEntry<'a, K, V, A>),
}
Expand description

A view into a single entry in a map, which may either be vacant or occupied.

This enum is constructed from the entry method on HashMap.

Variantsยง

ยง1.0.0

Occupied(OccupiedEntry<'a, K, V, A>)

An occupied entry.

ยง1.0.0

Vacant(VacantEntry<'a, K, V, A>)

A vacant entry.

Implementationsยง

Sourceยง

impl<'a, K, V, A: Allocator> Entry<'a, K, V, A>

1.0.0 ยท Source

pub fn or_insert(self, default: V) -> &'a mut V

Ensures a value is in the entry by inserting the default if empty, and returns a mutable reference to the value in the entry.

ยงExamples
use std::collections::HashMap;

let mut map: HashMap<&str, u32> = HashMap::new();

map.entry("poneyland").or_insert(3);
assert_eq!(map["poneyland"], 3);

*map.entry("poneyland").or_insert(10) *= 2;
assert_eq!(map["poneyland"], 6);
1.0.0 ยท Source

pub fn or_insert_with<F: FnOnce() -> V>(self, default: F) -> &'a mut V

Ensures a value is in the entry by inserting the result of the default function if empty, and returns a mutable reference to the value in the entry.

ยงExamples
use std::collections::HashMap;

let mut map = HashMap::new();
let value = "hoho";

map.entry("poneyland").or_insert_with(|| value);

assert_eq!(map["poneyland"], "hoho");
Source

pub fn or_try_insert_with<F: FnOnce() -> Result<V, E>, E>( self, default: F, ) -> Result<&'a mut V, E>

๐Ÿ”ฌThis is a nightly-only experimental API. (try_entry #157354)

Ensures a value is in the entry by inserting the result of a fallible default function if empty, and returns a mutable reference to the value in the entry.

This method works identically to or_insert_with except that the default function should return a Result and, in the case of an error, the error is propagated.

ยงExamples
#![feature(try_entry)]
use std::collections::HashMap;

let mut map: HashMap<&str, usize> = HashMap::new();
let value = "42";

map.entry("poneyland").or_try_insert_with(|| value.parse())?;

assert_eq!(map["poneyland"], 42);
1.50.0 ยท Source

pub fn or_insert_with_key<F: FnOnce(&K) -> V>(self, default: F) -> &'a mut V

Ensures a value is in the entry by inserting, if empty, the result of the default function. This method allows for generating key-derived values for insertion by providing the default function a reference to the key that was moved during the .entry(key) method call.

The reference to the moved key is provided so that cloning or copying the key is unnecessary, unlike with .or_insert_with(|| ... ).

ยงExamples
use std::collections::HashMap;

let mut map: HashMap<&str, usize> = HashMap::new();

map.entry("poneyland").or_insert_with_key(|key| key.chars().count());

assert_eq!(map["poneyland"], 9);
Source

pub fn or_try_insert_with_key<F: FnOnce(&K) -> Result<V, E>, E>( self, default: F, ) -> Result<&'a mut V, E>

๐Ÿ”ฌThis is a nightly-only experimental API. (try_entry #157354)

Ensures a value is in the entry by inserting, if empty, the result of the default function. This method allows for generating key-derived values for insertion by providing the default function a reference to the key that was moved during the entry(key) method call.

This method works identically to or_insert_with_key except that the default function should return a Result and, in the case of an error, the error is propagated.

ยงExamples
#![feature(try_entry)]
use std::collections::HashMap;

let mut map: HashMap<&str, usize> = HashMap::new();

map.entry("42").or_try_insert_with_key(|key| key.parse())?;

assert_eq!(map["42"], 42);
1.10.0 ยท Source

pub fn key(&self) -> &K

Returns a reference to this entryโ€™s key.

ยงExamples
use std::collections::HashMap;

let mut map: HashMap<&str, u32> = HashMap::new();
assert_eq!(map.entry("poneyland").key(), &"poneyland");
1.26.0 ยท Source

pub fn and_modify<F>(self, f: F) -> Self
where F: FnOnce(&mut V),

Provides in-place mutable access to an occupied entry before any potential inserts into the map.

ยงExamples
use std::collections::HashMap;

let mut map: HashMap<&str, u32> = HashMap::new();

map.entry("poneyland")
   .and_modify(|e| { *e += 1 })
   .or_insert(42);
assert_eq!(map["poneyland"], 42);

map.entry("poneyland")
   .and_modify(|e| { *e += 1 })
   .or_insert(42);
assert_eq!(map["poneyland"], 43);
1.83.0 ยท Source

pub fn insert_entry(self, value: V) -> OccupiedEntry<'a, K, V, A>

Sets the value of the entry, and returns an OccupiedEntry.

ยงExamples
use std::collections::HashMap;

let mut map: HashMap<&str, String> = HashMap::new();
let entry = map.entry("poneyland").insert_entry("hoho".to_string());

assert_eq!(entry.key(), &"poneyland");
Sourceยง

impl<'a, K, V: Default> Entry<'a, K, V>

1.28.0 ยท Source

pub fn or_default(self) -> &'a mut V

Ensures a value is in the entry by inserting the default value if empty, and returns a mutable reference to the value in the entry.

ยงExamples
use std::collections::HashMap;

let mut map: HashMap<&str, Option<u32>> = HashMap::new();
map.entry("poneyland").or_default();

assert_eq!(map["poneyland"], None);

Trait Implementationsยง

1.12.0 ยท Sourceยง

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

Sourceยง

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

Formats the value using the given formatter. Read more

Auto Trait Implementationsยง

ยง

impl<'a, K, V, A = Global> !UnwindSafe for Entry<'a, K, V, A>

ยง

impl<'a, K, V, A> Freeze for Entry<'a, K, V, A>
where K: Freeze,

ยง

impl<'a, K, V, A> RefUnwindSafe for Entry<'a, K, V, A>

ยง

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

ยง

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

ยง

impl<'a, K, V, A> Unpin for Entry<'a, K, V, A>
where K: Unpin,

ยง

impl<'a, K, V, A> UnsafeUnpin for Entry<'a, K, V, A>
where K: UnsafeUnpin,

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.