Struct Interval
struct Interval { ... }
Interval returned by interval and interval_at.
This type allows you to wait on a sequence of instants with a certain
duration between each instant. Unlike calling sleep in a loop, this lets
you count the time spent between the calls to sleep as well.
An Interval can be turned into a Stream with IntervalStream.
Implementations
impl Interval
async fn tick(self: &mut Self) -> InstantCompletes when the next instant in the interval has been reached.
Cancel safety
This method is cancellation safe. If
tickis used as the branch in atokio::select!and another branch completes first, then no tick has been consumed.Examples
use time; use Duration; asyncfn poll_tick(self: &mut Self, cx: &mut Context<'_>) -> Poll<Instant>Polls for the next instant in the interval to be reached.
This method can return the following values:
Poll::Pendingif the next instant has not yet been reached.Poll::Ready(instant)if the next instant has been reached.
When this method returns
Poll::Pending, the current task is scheduled to receive a wakeup when the instant has elapsed. Note that on multiple calls topoll_tick, only theWakerfrom theContextpassed to the most recent call is scheduled to receive a wakeup.fn reset(self: &mut Self)Resets the interval to complete one period after the current time.
This method ignores
MissedTickBehaviorstrategy.This is equivalent to calling
reset_at(Instant::now() + period).Examples
use time; use Duration; asyncfn reset_immediately(self: &mut Self)Resets the interval immediately.
This method ignores
MissedTickBehaviorstrategy.This is equivalent to calling
reset_at(Instant::now()).Examples
use time; use Duration; asyncfn reset_after(self: &mut Self, after: Duration)Resets the interval after the specified
std::time::Duration.This method ignores
MissedTickBehaviorstrategy.This is equivalent to calling
reset_at(Instant::now() + after).Examples
use time; use Duration; asyncfn reset_at(self: &mut Self, deadline: Instant)Resets the interval to a
crate::time::Instantdeadline.Sets the next tick to expire at the given instant. If the instant is in the past, then the
MissedTickBehaviorstrategy will be used to catch up. If the instant is in the future, then the next tick will complete at the given instant, even if that means that it will sleep for longer than the duration of thisInterval. If theIntervalhad any missed ticks before calling this method, then those are discarded.Examples
use ; use Duration; asyncfn missed_tick_behavior(self: &Self) -> MissedTickBehaviorReturns the
MissedTickBehaviorstrategy currently being used.fn set_missed_tick_behavior(self: &mut Self, behavior: MissedTickBehavior)Sets the
MissedTickBehaviorstrategy that should be used.fn period(self: &Self) -> DurationReturns the period of the interval.
impl Debug for Interval
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl Freeze for Interval
impl RefUnwindSafe for Interval
impl Send for Interval
impl Sync for Interval
impl Unpin for Interval
impl UnsafeUnpin for Interval
impl UnwindSafe for Interval
impl<T> Any for Interval
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for Interval
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for Interval
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> From for Interval
fn from(t: T) -> TReturns the argument unchanged.
impl<T, U> Into for Interval
fn into(self: Self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom for Interval
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for Interval
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>