Skip to main content

PropagatableRateLimits

Struct PropagatableRateLimits 

Source
pub struct PropagatableRateLimits(/* private fields */);
Expand description

A wrapper for RateLimits that can only be constructed by RateLimits::propagatable, ensuring that we do not include any dimensioned rate limits in it.

Methods from Deref<Target = RateLimits>§

Source

pub fn is_ok(&self) -> bool

Returns true if this instance contains no active limits.

This is the opposite of is_limited.

Source

pub fn is_limited(&self) -> bool

Returns true if this instance contains any active rate limits.

A rate limit is considered active if it has not yet expired.

Source

pub fn is_any_limited(&self, scopings: &[ItemScoping]) -> bool

Returns true if this is instance contains any active rate limits for the specified categories.

A rate limit is considered active if it has not yet expired.

Source

pub fn is_any_limited_with_quotas<'a>( &self, quotas: impl IntoIterator<Item = &'a Quota>, scopings: &[ItemScoping], ) -> bool

Returns true if this is instance contains any active rate limits for the specified categories.

This is similar to Self::is_limited, but additionally checks for quotas with a static limit of 0, which reject items even if there is no active rate limit in this instance.

A rate limit is considered active if it has not yet expired.

Source

pub fn has_expired(&self, now: Instant) -> bool

Returns true if any limit has expired at now.

Source

pub fn propagatable(&self) -> PropagatableRateLimits

Returns only the set of rate limits that can be propagated upstream. At this time, we cannot propagate dimensioned limits, so these must be filtered out.

Source

pub fn check(&self, scoping: &ItemScoping) -> Self

Checks whether any rate limits apply to the given scoping.

Returns a new RateLimits instance containing only the rate limits that match the provided ItemScoping. If no limits match, the returned instance will be empty and is_ok will return true.

Source

pub fn check_with_quotas<'a>( &self, quotas: impl IntoIterator<Item = &'a Quota>, scoping: &ItemScoping, ) -> Self

Checks whether any rate limits or static quotas apply to the given scoping.

This is similar to check, but additionally checks for quotas with a static limit of 0, which reject items even if there is no active rate limit in this instance.

Returns a new RateLimits instance containing the rate limits that match the provided ItemScoping. If no limits or quotas match, the returned instance will be empty.

Source

pub fn iter(&self) -> RateLimitsIter<'_> ⓘ

Returns an iterator over all rate limits in this collection.

Source

pub fn longest(&self) -> Option<&RateLimit>

Returns the rate limit with the latest expiration time.

If multiple rate limits have the same expiration time, any of them may be returned. If the collection is empty, returns None.

Source

pub fn is_empty(&self) -> bool

Returns true if there are no rate limits in this collection.

Note that an empty collection is not the same as having no active limits. Use is_ok to check if there are no active limits.

Trait Implementations§

Source§

impl Debug for PropagatableRateLimits

Source§

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

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

impl Deref for PropagatableRateLimits

Source§

type Target = RateLimits

The resulting type after dereferencing.
Source§

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

Dereferences the value.

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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)
The target type on which the method may be called.
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