pub struct LruMap<K, V, L = ByLength, S = RandomState>(/* private fields */)
where
K: Hash + PartialEq,
L: Limiter<K, V>,
S: BuildHasher;
Expand description
Wrapper of [schnellru::LruMap
] that implements fmt::Debug
.
Implementations§
Methods from Deref<Target = LruMap<K, V, L, S>>§
pub fn reserve_or_panic(&mut self, additional: usize)
pub fn reserve_or_panic(&mut self, additional: usize)
Ensures that at least additional
items can be inserted into the table without
reallocation.
§Panics
Will panic if the total number of elements is too big or the memory couldn’t be allocated.
pub fn guaranteed_capacity(&self) -> usize
pub fn guaranteed_capacity(&self) -> usize
Returns the current guaranteed capacity of the map.
This specifies how many elements the map is guaranteed to be able to hold without allocating any memory. This is a lower bound; it’s possible that the map can hold more elements than this.
This value will change as elements are added and removed. In particular, in might go down when an element is removed from the map.
This is independent of the cap imposed by the limiter.
pub fn memory_usage(&self) -> usize
pub fn memory_usage(&self) -> usize
Returns the current memory usage of the map, in bytes.
pub fn get(
&mut self,
key: &(impl Hash + PartialEq<K> + ?Sized),
) -> Option<&mut V>
pub fn get( &mut self, key: &(impl Hash + PartialEq<K> + ?Sized), ) -> Option<&mut V>
Returns a reference to the value for a given key and promotes that element to be the most recently used.
pub fn get_by_hash(
&mut self,
hash: u64,
is_eq: impl FnMut(&K, &V) -> bool,
) -> Option<&mut V>
pub fn get_by_hash( &mut self, hash: u64, is_eq: impl FnMut(&K, &V) -> bool, ) -> Option<&mut V>
Returns a reference to the value for a given hash
and for which is_eq
returns true
.
Promotes that element to be the most recently used.
pub fn get_or_insert<'a>(
&mut self,
key: impl Into<<L as Limiter<K, V>>::KeyToInsert<'a>> + Hash + PartialEq<K> + ?Sized,
get: impl FnOnce() -> V,
) -> Option<&mut V>
pub fn get_or_insert<'a>( &mut self, key: impl Into<<L as Limiter<K, V>>::KeyToInsert<'a>> + Hash + PartialEq<K> + ?Sized, get: impl FnOnce() -> V, ) -> Option<&mut V>
Tries to get the value for a given key
or insert a new value if there’s no element
in the map which matches that key
.
If present the element will be promoted to be the most recently used.
pub fn get_or_insert_fallible<'a, E>(
&mut self,
key: impl Into<<L as Limiter<K, V>>::KeyToInsert<'a>> + Hash + PartialEq<K> + ?Sized,
get: impl FnOnce() -> Result<V, E>,
) -> Result<Option<&mut V>, E>
pub fn get_or_insert_fallible<'a, E>( &mut self, key: impl Into<<L as Limiter<K, V>>::KeyToInsert<'a>> + Hash + PartialEq<K> + ?Sized, get: impl FnOnce() -> Result<V, E>, ) -> Result<Option<&mut V>, E>
Same as [Self::get_or_insert
], just with a fallible callback.
pub fn peek<'a>(
&'a self,
key: &(impl Hash + PartialEq<K> + ?Sized),
) -> Option<&'a V>
pub fn peek<'a>( &'a self, key: &(impl Hash + PartialEq<K> + ?Sized), ) -> Option<&'a V>
Returns a reference to the value for a given key. Does not change the order of the elements.
pub fn peek_mut<'a>(
&'a mut self,
key: &(impl Hash + PartialEq<K> + ?Sized),
) -> Option<&'a mut V>
pub fn peek_mut<'a>( &'a mut self, key: &(impl Hash + PartialEq<K> + ?Sized), ) -> Option<&'a mut V>
Returns a mutable reference to the value for a given key. Does not change the order of the elements.
pub fn peek_by_hash(
&self,
hash: u64,
is_eq: impl FnMut(&K, &V) -> bool,
) -> Option<&V>
pub fn peek_by_hash( &self, hash: u64, is_eq: impl FnMut(&K, &V) -> bool, ) -> Option<&V>
Returns a reference to the value for a given hash
and for which is_eq
returns true
.
Does not change the order of the elements.
pub fn peek_by_hash_mut(
&mut self,
hash: u64,
is_eq: impl FnMut(&K, &V) -> bool,
) -> Option<&mut V>
pub fn peek_by_hash_mut( &mut self, hash: u64, is_eq: impl FnMut(&K, &V) -> bool, ) -> Option<&mut V>
Returns a mutable reference to the value for a given hash
and for which is_eq
returns true
.
Does not change the order of the elements.
pub fn remove(&mut self, key: &(impl Hash + PartialEq<K> + ?Sized)) -> Option<V>
pub fn remove(&mut self, key: &(impl Hash + PartialEq<K> + ?Sized)) -> Option<V>
Removes an element from the map.
pub fn insert<'a>(
&mut self,
key: <L as Limiter<K, V>>::KeyToInsert<'a>,
value: V,
) -> bool
pub fn insert<'a>( &mut self, key: <L as Limiter<K, V>>::KeyToInsert<'a>, value: V, ) -> bool
Inserts a new element into the map.
Can fail if the element is rejected by the limiter or if we fail to grow an empty map.
Returns true
if the element was inserted; false
otherwise.
pub fn clear(&mut self)
pub fn clear(&mut self)
Clears the map.
pub fn pop_oldest(&mut self) -> Option<(K, V)>
pub fn pop_oldest(&mut self) -> Option<(K, V)>
Removes the least recently accessed element and returns it.
pub fn pop_newest(&mut self) -> Option<(K, V)>
pub fn pop_newest(&mut self) -> Option<(K, V)>
Removes the most recently accessed element and returns it.
pub fn peek_newest(&self) -> Option<(&K, &V)>
pub fn peek_newest(&self) -> Option<(&K, &V)>
Returns the most recently used (inserted or accessed) element of the map. Does not change the order of the elements.
pub fn peek_oldest(&self) -> Option<(&K, &V)>
pub fn peek_oldest(&self) -> Option<(&K, &V)>
Returns the least recently used (inserted or accessed) element of the map. Does not change the order of the elements.
pub fn iter(&self) -> Iter<'_, K, V, L>
pub fn iter(&self) -> Iter<'_, K, V, L>
An iterator over all of the elements in the most recently used order.
pub fn iter_mut(&mut self) -> IterMut<'_, K, V, L>
pub fn iter_mut(&mut self) -> IterMut<'_, K, V, L>
A mutable iterator over all of the elements in the most recently used order.
pub fn drain(&mut self) -> Drain<'_, K, V, L, S>
pub fn drain(&mut self) -> Drain<'_, K, V, L, S>
Drains the map of all of its elements in the most recently used order.
When the iterator is dropped the map will be automatically cleared.
pub fn limiter_mut(&mut self) -> &mut L
pub fn limiter_mut(&mut self) -> &mut L
Returns a mutable reference to the map’s limiter.
Trait Implementations§
Auto Trait Implementations§
impl<K, V, L, S> Freeze for LruMap<K, V, L, S>
impl<K, V, L, S> RefUnwindSafe for LruMap<K, V, L, S>where
S: RefUnwindSafe,
<L as Limiter<K, V>>::LinkType: RefUnwindSafe,
L: RefUnwindSafe,
K: RefUnwindSafe,
V: RefUnwindSafe,
impl<K, V, L, S> Send for LruMap<K, V, L, S>
impl<K, V, L, S> Sync for LruMap<K, V, L, S>
impl<K, V, L, S> Unpin for LruMap<K, V, L, S>
impl<K, V, L, S> UnwindSafe for LruMap<K, V, L, S>where
S: UnwindSafe,
<L as Limiter<K, V>>::LinkType: UnwindSafe,
L: UnwindSafe,
K: UnwindSafe,
V: UnwindSafe,
Blanket Implementations§
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
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> MaybeDebug for Twhere
T: Debug,
impl<T> MaybeSendSync for T
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.