kraken_async_rs::rate_limiting::ttl_cache

Struct TtlCache

Source
pub struct TtlCache<K, T>
where K: Ord + Clone, T: Clone,
{ /* private fields */ }
Expand description

A time-to-live cache that removes values when they expire. This is used to store and look up orders, to determine how old they are for rate limiting penalties when editing or cancelling.

Implementations§

Source§

impl<K, T> TtlCache<K, T>
where K: Ord + Clone, T: Clone,

Source

pub fn new() -> TtlCache<K, T>

Create a new, empty cache.

Source

pub fn insert(&mut self, ttl_entry: TtlEntry<K, T>) -> Option<TtlEntry<K, T>>

Insert the provided TtlEntry by it’s id for future lookup. Entries beyond their ttl are removed automatically any time the remove, get, or contains methods are called.

Source

pub fn remove(&mut self, ttl_entry: &TtlEntry<K, T>) -> bool

Removes an entry manually, returning if the entry was removed.

The cache is cleaned of any expired values after checking if this value was removed.

This follows the same semantics as BTreeSet’s remove method.

Source

pub fn contains(&mut self, id: &K) -> bool

Returns if the provided key is in the cache, after removing any expired values.

Source

pub fn get(&mut self, id: &K) -> Option<&TtlEntry<K, T>>

Gets a TtlEntry by id after removing any expired values.

Trait Implementations§

Source§

impl<K, T> Debug for TtlCache<K, T>
where K: Ord + Clone + Debug, T: Clone + Debug,

Source§

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

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

impl<K, T> Default for TtlCache<K, T>
where K: Ord + Clone, T: Clone,

Source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl<K, T> Freeze for TtlCache<K, T>

§

impl<K, T> RefUnwindSafe for TtlCache<K, T>

§

impl<K, T> Send for TtlCache<K, T>
where K: Send, T: Send,

§

impl<K, T> Sync for TtlCache<K, T>
where K: Sync, T: Sync,

§

impl<K, T> Unpin for TtlCache<K, T>

§

impl<K, T> UnwindSafe for TtlCache<K, T>

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

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

Source§

fn vzip(self) -> V

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

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

Source§

impl<T> MaybeSendSync for T