pub enum Entry<'a, K, V, A = Global>{
Vacant(VacantEntry<'a, K, V, A>),
Occupied(OccupiedEntry<'a, K, V, A>),
}
dep_allocator_api2
only.Expand description
Variants§
Vacant(VacantEntry<'a, K, V, A>)
A vacant entry.
Occupied(OccupiedEntry<'a, K, V, A>)
An occupied entry.
Implementations§
Source§impl<'a, K, V, A> Entry<'a, K, V, A>
impl<'a, K, V, A> Entry<'a, K, V, A>
1.0.0 · Sourcepub fn or_insert(self, default: V) -> &'a mut V
Available on crate feature alloc
only.
pub fn or_insert(self, default: V) -> &'a mut V
alloc
only.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::BTreeMap;
let mut map: BTreeMap<&str, usize> = BTreeMap::new();
map.entry("poneyland").or_insert(12);
assert_eq!(map["poneyland"], 12);
1.0.0 · Sourcepub fn or_insert_with<F>(self, default: F) -> &'a mut Vwhere
F: FnOnce() -> V,
Available on crate feature alloc
only.
pub fn or_insert_with<F>(self, default: F) -> &'a mut Vwhere
F: FnOnce() -> V,
alloc
only.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::BTreeMap;
let mut map: BTreeMap<&str, String> = BTreeMap::new();
let s = "hoho".to_string();
map.entry("poneyland").or_insert_with(|| s);
assert_eq!(map["poneyland"], "hoho".to_string());
1.50.0 · Sourcepub fn or_insert_with_key<F>(self, default: F) -> &'a mut V
Available on crate feature alloc
only.
pub fn or_insert_with_key<F>(self, default: F) -> &'a mut V
alloc
only.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::BTreeMap;
let mut map: BTreeMap<&str, usize> = BTreeMap::new();
map.entry("poneyland").or_insert_with_key(|key| key.chars().count());
assert_eq!(map["poneyland"], 9);
1.10.0 · Sourcepub fn key(&self) -> &K
Available on crate feature alloc
only.
pub fn key(&self) -> &K
alloc
only.Returns a reference to this entry’s key.
§Examples
use std::collections::BTreeMap;
let mut map: BTreeMap<&str, usize> = BTreeMap::new();
assert_eq!(map.entry("poneyland").key(), &"poneyland");
1.26.0 · Sourcepub fn and_modify<F>(self, f: F) -> Entry<'a, K, V, A>
Available on crate feature alloc
only.
pub fn and_modify<F>(self, f: F) -> Entry<'a, K, V, A>
alloc
only.Provides in-place mutable access to an occupied entry before any potential inserts into the map.
§Examples
use std::collections::BTreeMap;
let mut map: BTreeMap<&str, usize> = BTreeMap::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);
Sourcepub fn insert_entry(self, value: V) -> OccupiedEntry<'a, K, V, A>
🔬This is a nightly-only experimental API. (btree_entry_insert
)Available on crate feature alloc
only.
pub fn insert_entry(self, value: V) -> OccupiedEntry<'a, K, V, A>
btree_entry_insert
)alloc
only.Sets the value of the entry, and returns an OccupiedEntry
.
§Examples
#![feature(btree_entry_insert)]
use std::collections::BTreeMap;
let mut map: BTreeMap<&str, String> = BTreeMap::new();
let entry = map.entry("poneyland").insert_entry("hoho".to_string());
assert_eq!(entry.key(), &"poneyland");
Source§impl<'a, K, V, A> Entry<'a, K, V, A>
impl<'a, K, V, A> Entry<'a, K, V, A>
1.28.0 · Sourcepub fn or_default(self) -> &'a mut V
Available on crate feature alloc
only.
pub fn or_default(self) -> &'a mut V
alloc
only.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::BTreeMap;
let mut map: BTreeMap<&str, Option<usize>> = BTreeMap::new();
map.entry("poneyland").or_default();
assert_eq!(map["poneyland"], None);
Trait Implementations§
Auto Trait Implementations§
impl<'a, K, V, A> Freeze for Entry<'a, K, V, A>
impl<'a, K, V, A> RefUnwindSafe for Entry<'a, K, V, A>
impl<'a, K, V, A> Send for Entry<'a, K, V, A>
impl<'a, K, V, A> Sync for Entry<'a, K, V, A>
impl<'a, K, V, A> Unpin for Entry<'a, K, V, A>
impl<'a, K, V, A = Global> !UnwindSafe for Entry<'a, K, V, A>
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> ByteSized for T
impl<T> ByteSized for T
Source§const BYTE_ALIGN: usize = _
const BYTE_ALIGN: usize = _
Source§fn byte_align(&self) -> usize ⓘ
fn byte_align(&self) -> usize ⓘ
Source§fn ptr_size_ratio(&self) -> [usize; 2]
fn ptr_size_ratio(&self) -> [usize; 2]
Source§impl<T, R> Chain<R> for Twhere
T: ?Sized,
impl<T, R> Chain<R> for Twhere
T: ?Sized,
Source§impl<T> ExtAny for T
impl<T> ExtAny for T
Source§fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
Source§impl<T> ExtMem for Twhere
T: ?Sized,
impl<T> ExtMem for Twhere
T: ?Sized,
Source§const NEEDS_DROP: bool = _
const NEEDS_DROP: bool = _
Source§fn mem_align_of_val(&self) -> usize ⓘ
fn mem_align_of_val(&self) -> usize ⓘ
Source§fn mem_size_of_val(&self) -> usize ⓘ
fn mem_size_of_val(&self) -> usize ⓘ
Source§fn mem_needs_drop(&self) -> bool
fn mem_needs_drop(&self) -> bool
true
if dropping values of this type matters. Read moreSource§fn mem_forget(self)where
Self: Sized,
fn mem_forget(self)where
Self: Sized,
self
without running its destructor. Read moreSource§fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
Source§unsafe fn mem_zeroed<T>() -> T
unsafe fn mem_zeroed<T>() -> T
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§fn mem_as_bytes(&self) -> &[u8] ⓘ
fn mem_as_bytes(&self) -> &[u8] ⓘ
unsafe_slice
only.§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Hook for T
impl<T> Hook for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError> ⓘ
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError> ⓘ
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out
indicating that a T
is niched.