Skip to main content

RateLimiterConfig

Struct RateLimiterConfig 

Source
pub struct RateLimiterConfig {
    pub capacity: u32,
    pub refill_period: Duration,
    pub refill_amount: u32,
    pub cost_per_request: u32,
}
Expand description

Rate limiter configuration

Fields§

§capacity: u32

Maximum number of tokens (requests) in the bucket

§refill_period: Duration

Time window for refilling tokens

§refill_amount: u32

Number of tokens to refill per period (defaults to capacity)

§cost_per_request: u32

Cost per request in tokens (defaults to 1)

Implementations§

Source§

impl RateLimiterConfig

Source

pub fn new(capacity: u32, refill_period: Duration) -> Self

Create a new rate limiter configuration

§Arguments
  • capacity - Maximum number of requests allowed in the time window
  • refill_period - Time window for the rate limit
§Example
use ccxt_core::rate_limiter::RateLimiterConfig;
use std::time::Duration;

// 100 requests per minute
let config = RateLimiterConfig::new(100, Duration::from_secs(60));
Source

pub fn with_refill_amount(self, amount: u32) -> Self

Set custom refill amount (different from capacity)

Source

pub fn with_cost_per_request(self, cost: u32) -> Self

Set custom cost per request

Source§

impl RateLimiterConfig

Source

pub fn validate(&self) -> Result<ValidationResult, ConfigValidationError>

Validates the rate limiter configuration parameters.

§Returns

Returns Ok(ValidationResult) if the configuration is valid. The ValidationResult may contain warnings for suboptimal but valid configurations.

Returns Err(ConfigValidationError) if the configuration is invalid.

§Validation Rules
  • capacity must be > 0 (zero capacity is invalid)
  • refill_period < 100ms generates a warning (may cause high CPU usage)
§Example
use ccxt_core::rate_limiter::RateLimiterConfig;
use std::time::Duration;

let config = RateLimiterConfig::new(10, Duration::from_secs(1));
let result = config.validate();
assert!(result.is_ok());

let invalid_config = RateLimiterConfig::new(0, Duration::from_secs(1));
let result = invalid_config.validate();
assert!(result.is_err());

Trait Implementations§

Source§

impl Clone for RateLimiterConfig

Source§

fn clone(&self) -> RateLimiterConfig

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

impl Debug for RateLimiterConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for RateLimiterConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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> 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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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