reth_network::cache

Struct LruMap

Source
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§

Source§

impl<K, V> LruMap<K, V>
where K: Hash + PartialEq,

Source

pub fn new(max_length: u32) -> Self

Returns a new cache with default limiter and hash builder.

Source§

impl<K, V> LruMap<K, V, Unlimited>
where K: Hash + PartialEq,

Source

pub fn new_unlimited() -> Self

Returns a new cache with [Unlimited] limiter and default hash builder.

Methods from Deref<Target = LruMap<K, V, L, S>>§

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

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

Returns the current memory usage of the map, in bytes.

pub fn len(&self) -> usize

Returns the number of elements in the map.

pub fn is_empty(&self) -> bool

Returns whether the map is empty or not.

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>

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>
where <L as Limiter<K, V>>::KeyToInsert<'a>: Hash + PartialEq<K>,

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>
where <L as Limiter<K, V>>::KeyToInsert<'a>: Hash + PartialEq<K>,

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>

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>

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>

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>

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>

Removes an element from the map.

pub fn insert<'a>( &mut self, key: <L as Limiter<K, V>>::KeyToInsert<'a>, value: V, ) -> bool
where <L as Limiter<K, V>>::KeyToInsert<'a>: Hash + PartialEq<K>,

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)

Clears the map.

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)>

Removes the most recently accessed element and returns it.

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)>

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>

An iterator over all of the elements in the most recently used order.

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>

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(&self) -> &L

Returns a reference to the map’s limiter.

pub fn limiter_mut(&mut self) -> &mut L

Returns a mutable reference to the map’s limiter.

Trait Implementations§

Source§

impl<K, V, L, S> Debug for LruMap<K, V, L, S>
where K: Hash + PartialEq + Display, V: Debug, L: Limiter<K, V> + Debug, S: BuildHasher,

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<K, V: Default, L, S> Default for LruMap<K, V, L, S>
where K: Hash + PartialEq + Default, L: Limiter<K, V> + Default, S: BuildHasher + Default,

Source§

fn default() -> LruMap<K, V, L, S>

Returns the “default value” for a type. Read more
Source§

impl<K, V, L, S> Deref for LruMap<K, V, L, S>
where K: Hash + PartialEq, L: Limiter<K, V>, S: BuildHasher,

Source§

type Target = LruMap<K, V, L, S>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<K, V, L, S> DerefMut for LruMap<K, V, L, S>
where K: Hash + PartialEq, L: Limiter<K, V>, S: BuildHasher,

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.

Auto Trait Implementations§

§

impl<K, V, L, S> Freeze for LruMap<K, V, L, S>
where S: Freeze, <L as Limiter<K, V>>::LinkType: Freeze, L: Freeze,

§

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>
where S: Send, <L as Limiter<K, V>>::LinkType: Send, L: Send, K: Send, V: Send,

§

impl<K, V, L, S> Sync for LruMap<K, V, L, S>
where S: Sync, <L as Limiter<K, V>>::LinkType: Sync, L: Sync, K: Sync, V: Sync,

§

impl<K, V, L, S> Unpin for LruMap<K, V, L, S>
where S: Unpin, <L as Limiter<K, V>>::LinkType: Unpin, L: Unpin, K: Unpin, V: Unpin,

§

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> 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
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 T
where T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows 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) -> R
where R: 'a,

Mutably borrows 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
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows 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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows 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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types #44874)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .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
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .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
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeDebug for T
where 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.