pub struct KeyedRateLimiter { /* private fields */ }Expand description
Per-key rate limiter using in-memory tracking Maintains separate rate limits for each key (IP, user ID, etc.)
Implementations§
Source§impl KeyedRateLimiter
impl KeyedRateLimiter
Sourcepub fn new(config: RateLimitConfig) -> Self
pub fn new(config: RateLimitConfig) -> Self
Create a new keyed rate limiter
Sourcepub fn check(&self, key: &str) -> Result<()>
pub fn check(&self, key: &str) -> Result<()>
Check if a request should be allowed for the given key
Returns Ok(()) if allowed, Err with status code if rate limited
Sourcepub fn active_limiters(&self) -> usize
pub fn active_limiters(&self) -> usize
Get the number of active rate limiters (for monitoring)
Sourcepub fn clone_config(&self) -> RateLimitConfig
pub fn clone_config(&self) -> RateLimitConfig
Create a copy for independent testing
Auto Trait Implementations§
impl Freeze for KeyedRateLimiter
impl RefUnwindSafe for KeyedRateLimiter
impl Send for KeyedRateLimiter
impl Sync for KeyedRateLimiter
impl Unpin for KeyedRateLimiter
impl UnwindSafe for KeyedRateLimiter
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> 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::Request