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
impl RateLimitBuilderInstance
Sourcepub fn buckets(self, buckets: Vec<(String, Vec<Tier>)>) -> Self
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
Tierobjects defining the rate limiting rules
§Returns
Returns self for method chaining.
Sourcepub fn clustered(self, timer: Rc<Timer>) -> Self
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.
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()
Sourcepub fn build(self) -> Result<RateLimitInstance, RateLimitBuildError>
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 instanceErr(RateLimitBuildError)- If any error occurs during the build process