pub enum RateLimitBackend {
InMemory {
limiter: RateLimiter,
config: RateLimitConfig,
},
}Expand description
Unified rate limiting backend that supports both in-memory and Redis implementations.
When running a single server instance, InMemory is sufficient.
For distributed deployments with multiple server instances behind a
load balancer, use Redis to ensure consistent rate limiting across
all nodes.
Variants§
InMemory
In-memory rate limiter (single instance only).
Implementations§
Source§impl RateLimitBackend
impl RateLimitBackend
Sourcepub fn in_memory(config: RateLimitConfig) -> Self
pub fn in_memory(config: RateLimitConfig) -> Self
Create a new in-memory rate limiting backend.
Sourcepub fn config(&self) -> &RateLimitConfig
pub fn config(&self) -> &RateLimitConfig
Get the rate limit configuration.
Sourcepub async fn check_rate_limit(&self, client_key: &str) -> bool
pub async fn check_rate_limit(&self, client_key: &str) -> bool
Check if a request from the given client should be allowed.
Returns true if the request is allowed.
Sourcepub async fn remaining(&self, client_key: &str) -> u32
pub async fn remaining(&self, client_key: &str) -> u32
Get remaining requests for a client key.
Sourcepub async fn cleanup_expired(&self)
pub async fn cleanup_expired(&self)
Clean up expired records (only applicable to in-memory backend).
For Redis, TTL-based expiry is handled automatically by Redis.
Sourcepub fn backend_name(&self) -> &'static str
pub fn backend_name(&self) -> &'static str
Return a human-readable description of the backend type.
Trait Implementations§
Source§impl Clone for RateLimitBackend
impl Clone for RateLimitBackend
Source§fn clone(&self) -> RateLimitBackend
fn clone(&self) -> RateLimitBackend
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for RateLimitBackend
impl !RefUnwindSafe for RateLimitBackend
impl Send for RateLimitBackend
impl Sync for RateLimitBackend
impl Unpin for RateLimitBackend
impl UnsafeUnpin for RateLimitBackend
impl !UnwindSafe for RateLimitBackend
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.