pub struct Retry<'a> {
gctx: &'a GlobalContext,
retries: u64,
max_retries: u64,
}
Expand description
State for managing retrying a network operation.
Fields§
§gctx: &'a GlobalContext
§retries: u64
The number of failed attempts that have been done so far.
Starts at 0, and increases by one each time an attempt fails.
max_retries: u64
The maximum number of times the operation should be retried.
0 means it should never retry.
Implementations§
Source§impl<'a> Retry<'a>
impl<'a> Retry<'a>
pub fn new(gctx: &'a GlobalContext) -> CargoResult<Retry<'a>>
Sourcepub fn try<T>(&mut self, f: impl FnOnce() -> CargoResult<T>) -> RetryResult<T>
pub fn try<T>(&mut self, f: impl FnOnce() -> CargoResult<T>) -> RetryResult<T>
Calls the given callback, and returns a RetryResult
which
indicates whether or not this needs to be called again at some point
in the future to retry the operation if it failed.
Sourcefn next_sleep_ms(&self) -> u64
fn next_sleep_ms(&self) -> u64
Gets the next sleep duration in milliseconds.
Sourcefn parse_retry_after(
response: &HttpNotSuccessful,
now: &Timestamp,
) -> Option<u64>
fn parse_retry_after( response: &HttpNotSuccessful, now: &Timestamp, ) -> Option<u64>
Parse the HTTP Retry-After
header.
Returns the number of milliseconds to wait before retrying according to the header.
Auto Trait Implementations§
impl<'a> Freeze for Retry<'a>
impl<'a> !RefUnwindSafe for Retry<'a>
impl<'a> !Send for Retry<'a>
impl<'a> !Sync for Retry<'a>
impl<'a> Unpin for Retry<'a>
impl<'a> !UnwindSafe for Retry<'a>
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
§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>
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>
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§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> ErasedDestructor for Twhere
T: 'static,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 24 bytes