Struct Interval
pub struct Interval { /* private fields */ }
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(&mut self) -> InstantCompletes when the next instant in the interval has been reached.
Cancel safety
This method is cancel safe. If
tickis used as a branch intokio::select!and another branch completes first, then no tick has been consumed.Examples
use time; use Duration; # # asyncfn poll_tick(&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(&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(&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(&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(&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) -> MissedTickBehaviorReturns the
MissedTickBehaviorstrategy currently being used.fn set_missed_tick_behavior(&mut self, behavior: MissedTickBehavior)Sets the
MissedTickBehaviorstrategy that should be used.fn period(&self) -> DurationReturns the period of the interval.
Trait Implementations
impl Debug for Interval
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Auto Trait Implementations
impl !RefUnwindSafe for Interval
impl !UnwindSafe for Interval
impl Freeze for Interval
impl Send for Interval
impl Sync for Interval
impl Unpin for Interval
impl UnsafeUnpin for Interval
Blanket Implementations
impl<T> Any for Interval
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for Interval
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for Interval
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> From<T> for Interval
fn from(t: T) -> TReturns the argument unchanged.
impl<T, U> Into<U> for Interval
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for Interval
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for Interval
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>