Skip to main content

RateLimitBuilderInstance

Struct RateLimitBuilderInstance 

Source
pub struct RateLimitBuilderInstance { /* private fields */ }
Expand description

A configurable instance of a rate limit builder.

This struct represents a particular instance of a rate limit builder that can be further configured before building the final RateLimitInstance.

Implementations§

Source§

impl RateLimitBuilderInstance

Source

pub fn buckets(self, buckets: Vec<(String, Vec<Tier>)>) -> Self

Configures custom rate limiting buckets for this instance.

This method allows overriding the default buckets extracted from the metadata with custom bucket configurations. Each bucket is defined by a string identifier and a vector of tiers that specify the rate limiting rules.

§Arguments
  • buckets - A vector of tuples where each tuple contains:
    • A string identifier for the bucket group
    • A vector of Tier objects defining the rate limiting rules
§Returns

Returns self for method chaining.

Source

pub fn clustered(self, timer: Rc<Timer>) -> Self

Enables clustered mode for distributed rate limiting.

When clustered mode is enabled, the rate limiter will coordinate across multiple instances using distributed storage. This requires a timer for synchronization and a distributed storage client to be available.

§Arguments
  • timer - A shared reference to a Timer used for synchronization in the distributed environment
§Returns

Returns self for method chaining.

Source

pub fn shared(self) -> Self

Allows sharing the rate limit across different policy instances

When shared mode is enabled:

  • The prefix is fixed to ensure all instances share the same store
  • The user must explicitly choose between local or clustered mode
  • For clustered mode, call .clustered(timer) after .shared()
Source

pub fn build(self) -> Result<RateLimitInstance, RateLimitBuildError>

Builds the final RateLimitInstance with the configured options.

This method constructs and returns a fully configured RateLimitInstance based on all the settings and dependencies accumulated in this builder. It performs validation to ensure that clustered mode has the necessary distributed storage client available.

The method creates:

  • A unique storage key based on the prefix and bucket hash
  • A key manager for handling rate limit keys
  • A bucket factory for managing rate limit buckets
  • A distribution formula for load balancing (if clustered)
§Returns
  • Ok(RateLimitInstance) - A fully configured rate limiter instance
  • Err(RateLimitBuildError) - If any error occurs during the build process

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<C, T> Extract<T> for C
where T: FromContext<C>,

Source§

type Error = <T as FromContext<C>>::Error

Source§

fn extract(&self) -> Result<T, <C as Extract<T>>::Error>

Source§

fn extract_always(&self) -> T
where Self: Extract<T, Error = Infallible>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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.