Struct relay_quotas::CachedRateLimits

source ·
pub struct CachedRateLimits(/* private fields */);
Expand description

Like RateLimits, a collection of scoped rate limits but with all the checks necessary to cache the limits.

The data structure makes sure no expired rate limits are enforced as well as removing any indexed rate limit.

Cached rate limits don’t enforce indexed rate limits because at the time of the check the decision whether an envelope is sampled or not is not yet known. Additionally even if the item is later dropped by dynamic sampling, it must still be around to extract metrics and cannot be dropped too early.

Implementations§

source§

impl CachedRateLimits

source

pub fn new() -> Self

Creates a new, empty instance without any rate limits enforced.

source

pub fn add(&mut self, limit: RateLimit)

Adds a limit to this collection.

See also: RateLimits::add.

source

pub fn merge(&mut self, rate_limits: RateLimits)

Merges more rate limits into this instance.

See also: RateLimits::merge.

source

pub fn current_limits(&mut self) -> &RateLimits

Returns a reference to the contained rate limits.

This call gurantuess that at the time of call no returned rate limit is expired.

Trait Implementations§

source§

impl Debug for CachedRateLimits

source§

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

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

impl Default for CachedRateLimits

source§

fn default() -> CachedRateLimits

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

Auto Trait Implementations§

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, U> TryFrom<U> for T
where U: Into<T>,

§

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

§

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

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