Enum std::collections::hash_map::Entry

1.0.0 · source ·
pub enum Entry<'a, K: 'a, V: 'a> {
    Occupied(OccupiedEntry<'a, K, V>),
    Vacant(VacantEntry<'a, K, V>),
}
Expand description

map 中单个条目的视图,该条目可能是空的或被已占用。

enum 是根据 HashMap 上的 entry 方法构造的。

Variants§

§

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

一个被占用的条目。

§

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

一个空的条目。

Implementations§

source§

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

source

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

如果为空,则通过插入默认值来确保该值在条目中,并返回对条目中值的可变引用。

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);
Run
source

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

如果为空,则通过插入默认函数的结果来确保该值在条目中,并返回对条目中值的可变引用。

Examples
use std::collections::HashMap;

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

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

assert_eq!(map["poneyland"], "hoho".to_string());
Run
1.50.0 · source

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

如果为空,则通过插入默认函数的结果,确保值在条目中。 通过为 .entry(key) 方法调用期间移动的键提供默认函数引用,此方法可以生成用于插入的键派生值。

提供了对已移动键的引用,因此不需要克隆或复制键,这与 .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);
Run
1.10.0 · source

pub fn key(&self) -> &K

返回此条目的键的引用。

Examples
use std::collections::HashMap;

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

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

在任何潜在的插入 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);
Run
source

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

🔬This is a nightly-only experimental API. (entry_insert #65225)

设置条目的值,并返回 OccupiedEntry

Examples
#![feature(entry_insert)]
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");
Run
source§

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

1.28.0 · source

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

如果为空,则通过插入默认值来确保值在条目中,并向条目中的值返回变量引用。

Examples
use std::collections::HashMap;

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

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

Trait Implementations§

1.12.0 · source§

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

source§

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

使用给定的格式化程序格式化该值。 Read more

Auto Trait Implementations§

§

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

§

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

§

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

§

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

§

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

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

获取 selfTypeIdRead more
source§

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

source§

fn borrow(&self) -> &T

从拥有的值中一成不变地借用。 Read more
source§

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

source§

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

从拥有的值中借用。 Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

返回未更改的参数。

source§

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

source§

fn into(self) -> U

调用 U::from(self)

也就是说,这种转换是 From<T> for U 实现选择执行的任何操作。

source§

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

§

type Error = Infallible

发生转换错误时返回的类型。
source§

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

执行转换。
source§

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

§

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

发生转换错误时返回的类型。
source§

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

执行转换。