pub struct ApiRateLimiter { /* private fields */ }Implementations§
Source§impl ApiRateLimiter
impl ApiRateLimiter
pub fn new( max_concurrent: usize, max_retries: u32, backoff_base_ms: u64, name: &'static str, ) -> Self
Sourcepub async fn run<F, Fut, T>(&self, call: F) -> Result<T, String>
pub async fn run<F, Fut, T>(&self, call: F) -> Result<T, String>
Executa call respeitando o limite de concorrência desta instância, com exponential
backoff quando o erro indica throttling (429/403/502/503/504).
call é uma closure que retorna o future a cada tentativa — precisa ser Fn (não FnOnce)
porque pode ser chamada mais de uma vez em caso de retry.
Auto Trait Implementations§
impl Freeze for ApiRateLimiter
impl !RefUnwindSafe for ApiRateLimiter
impl Send for ApiRateLimiter
impl Sync for ApiRateLimiter
impl Unpin for ApiRateLimiter
impl UnsafeUnpin for ApiRateLimiter
impl !UnwindSafe for ApiRateLimiter
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more