Skip to main content

MethodAwareRateLimiter

Struct MethodAwareRateLimiter 

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

A method-aware rate limiter that automatically looks up CU costs per RPC method.

Wraps a TokenBucket with a CuCostTable so callers only need to supply the method name — the correct compute-unit cost is resolved internally.

Implementations§

Source§

impl MethodAwareRateLimiter

Source

pub fn new(config: RateLimiterConfig, cost_table: CuCostTable) -> Self

Create a new method-aware rate limiter.

Source

pub fn try_acquire_method(&self, method: &str) -> bool

Acquire tokens for a specific RPC method, using its CU cost.

Returns true if the method’s cost was successfully consumed from the bucket, false if the bucket has insufficient tokens (rate limited).

Source

pub fn wait_time_for_method(&self, method: &str) -> Duration

Wait time before the given method can be called.

Source

pub fn bucket(&self) -> &TokenBucket

Access the underlying bucket for manual control.

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<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, 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