RateLimiter

Struct RateLimiter 

Source
pub struct RateLimiter<S>{ /* private fields */ }
Expand description

Coordinates rate limiting decisions.

Implementations§

Source§

impl<S> RateLimiter<S>

Source

pub fn new( registry: SuppressionRegistry<S>, metrics: Metrics, circuit_breaker: Arc<CircuitBreaker>, ) -> Self

Create a new rate limiter.

§Arguments
  • registry - The suppression registry (which contains the clock)
  • metrics - Metrics tracker
  • circuit_breaker - Circuit breaker for fail-safe operation
Source

pub fn check_event(&self, signature: EventSignature) -> LimitDecision

Process an event and decide whether to allow or suppress it.

§Arguments
  • signature - The event signature
§Returns

A LimitDecision indicating whether to allow or suppress the event.

§Fail-Safe Behavior

If rate limiting operations fail (circuit breaker open), this method fails open and allows all events through to preserve observability.

§Performance

This method is designed for the hot path:

  • Fast hash lookup in sharded map
  • Lock-free atomic operations where possible
  • No allocations in common case
Source

pub fn check_event_with_metadata( &self, signature: EventSignature, metadata: EventMetadata, ) -> LimitDecision

Process an event with metadata and decide whether to allow or suppress it.

This method captures event metadata on first occurrence for human-readable summaries.

Note: Only available with the human-readable feature flag.

§Arguments
  • signature - The event signature
  • metadata - Event details (level, message, target, fields)
§Returns

A LimitDecision indicating whether to allow or suppress the event.

§Fail-Safe Behavior

Same as check_event: fails open if rate limiting operations fail.

Source

pub fn registry(&self) -> &SuppressionRegistry<S>

Get a reference to the registry.

Source

pub fn metrics(&self) -> &Metrics

Get a reference to the metrics.

Source

pub fn circuit_breaker(&self) -> &Arc<CircuitBreaker>

Get a reference to the circuit breaker.

Trait Implementations§

Source§

impl<S> Clone for RateLimiter<S>

Source§

fn clone(&self) -> RateLimiter<S>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

§

impl<S> Freeze for RateLimiter<S>
where S: Freeze,

§

impl<S> !RefUnwindSafe for RateLimiter<S>

§

impl<S> Send for RateLimiter<S>

§

impl<S> Sync for RateLimiter<S>

§

impl<S> Unpin for RateLimiter<S>
where S: Unpin,

§

impl<S> !UnwindSafe for RateLimiter<S>

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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more