Struct alloc::collections::btree_map::OccupiedEntry
1.0.0 · source · pub struct OccupiedEntry<'a, K, V, A: Allocator + Clone = Global> { /* private fields */ }
Expand description
BTreeMap
中已占用条目的视图。
它是 Entry
枚举的一部分。
Implementations§
source§impl<'a, K: Ord, V, A: Allocator + Clone> OccupiedEntry<'a, K, V, A>
impl<'a, K: Ord, V, A: Allocator + Clone> OccupiedEntry<'a, K, V, A>
1.12.0 · sourcepub fn remove_entry(self) -> (K, V)
pub fn remove_entry(self) -> (K, V)
从 map 获取键和值的所有权。
Examples
use std::collections::BTreeMap;
use std::collections::btree_map::Entry;
let mut map: BTreeMap<&str, usize> = BTreeMap::new();
map.entry("poneyland").or_insert(12);
if let Entry::Occupied(o) = map.entry("poneyland") {
// 我们从 map 中删除了这个条目。
o.remove_entry();
}
// 如果现在尝试获取该值,它将为 panic:
// println!("{}", map["poneyland"]);
Runsourcepub fn get_mut(&mut self) -> &mut V
pub fn get_mut(&mut self) -> &mut V
获取条目中的值的可变引用。
如果您需要引用可能比销毁 Entry
值还长的 OccupiedEntry
,请参阅 into_mut
。
Examples
use std::collections::BTreeMap;
use std::collections::btree_map::Entry;
let mut map: BTreeMap<&str, usize> = BTreeMap::new();
map.entry("poneyland").or_insert(12);
assert_eq!(map["poneyland"], 12);
if let Entry::Occupied(mut o) = map.entry("poneyland") {
*o.get_mut() += 10;
assert_eq!(*o.get(), 22);
// 我们可以多次使用同一个 Entry。
*o.get_mut() += 2;
}
assert_eq!(map["poneyland"], 24);
Runsourcepub fn into_mut(self) -> &'a mut V
pub fn into_mut(self) -> &'a mut V
将条目转换为其值的可变引用。
如果需要多次引用 OccupiedEntry
,请参见 get_mut
。
Examples
use std::collections::BTreeMap;
use std::collections::btree_map::Entry;
let mut map: BTreeMap<&str, usize> = BTreeMap::new();
map.entry("poneyland").or_insert(12);
assert_eq!(map["poneyland"], 12);
if let Entry::Occupied(o) = map.entry("poneyland") {
*o.into_mut() += 10;
}
assert_eq!(map["poneyland"], 22);
Runsourcepub fn insert(&mut self, value: V) -> V
pub fn insert(&mut self, value: V) -> V
使用 OccupiedEntry
键设置条目的值,并返回条目的旧值。
Examples
use std::collections::BTreeMap;
use std::collections::btree_map::Entry;
let mut map: BTreeMap<&str, usize> = BTreeMap::new();
map.entry("poneyland").or_insert(12);
if let Entry::Occupied(mut o) = map.entry("poneyland") {
assert_eq!(o.insert(15), 12);
}
assert_eq!(map["poneyland"], 15);
Runsourcepub fn remove(self) -> V
pub fn remove(self) -> V
从 map 中获取条目的值,并将其返回。
Examples
use std::collections::BTreeMap;
use std::collections::btree_map::Entry;
let mut map: BTreeMap<&str, usize> = BTreeMap::new();
map.entry("poneyland").or_insert(12);
if let Entry::Occupied(o) = map.entry("poneyland") {
assert_eq!(o.remove(), 12);
}
// 如果我们尝试获得 `poneyland` 的值,则它将为 panic:
// println!("{}", map["poneyland"]);
Run