pub enum MissedTickBehavior {
Burst,
Delay,
Skip,
}Expand description
Defines the behavior of an Interval when it misses a tick.
Generally, a tick is missed if too much time is spent without calling
Interval::tick().
MissedTickBehavior is used to specify the behavior for
Interval when execution time exceeds the set interval. Each variant represents a different
strategy.
Note that the precision of these behaviors depend on the precision of the timer.
This enum is mostly copied from tokio
Variants§
Burst
Ticks as fast as possible until caught up.
When this strategy is used, Interval schedules ticks “normally” (the
same as it would have if the ticks hadn’t been delayed), which results
in it firing ticks as fast as possible until it is caught up in time to
where it should be. Unlike Delay and Skip, the ticks yielded
when Burst is used (the Instants that tick
yields) aren’t different than they would have been if a tick had not
been missed. Like Skip, and unlike Delay, the ticks may be
shortened.
This looks something like this:
Expected ticks: | 1 | 2 | 3 | 4 | 5 | 6 |
Actual ticks: | work -----| delay | work | work | work -| work -----|This is the default behavior when Interval is created with
[interval] and [interval_at].
Delay
Tick at multiples of period from when tick was called, rather than
from start.
When this strategy is used and Interval has missed a tick, instead
of scheduling ticks to fire at multiples of period from start (the
time when the first tick was fired), it schedules all future ticks to
happen at a regular period from the point when tick was called.
Unlike Burst and Skip, ticks are not shortened, and they aren’t
guaranteed to happen at a multiple of period from start any longer.
This looks something like this:
Expected ticks: | 1 | 2 | 3 | 4 | 5 | 6 |
Actual ticks: | work -----| delay | work -----| work -----| work -----|Skip
Skips missed ticks and tick on the next multiple of period from
start.
When this strategy is used, Interval schedules the next tick to fire
at the next-closest tick that is a multiple of period away from
start (the point where Interval first ticked). Like Burst, all
ticks remain multiples of period away from start, but unlike
Burst, the ticks may not be one multiple of period away from the
last tick. Like Delay, the ticks are no longer the same as they
would have been if ticks had not been missed, but unlike Delay, and
like Burst, the ticks may be shortened to be less than one period
away from each other.
This looks something like this:
Expected ticks: | 1 | 2 | 3 | 4 | 5 | 6 |
Actual ticks: | work -----| delay | work ---| work -----| work -----|Trait Implementations§
Source§impl Clone for MissedTickBehavior
impl Clone for MissedTickBehavior
Source§fn clone(&self) -> MissedTickBehavior
fn clone(&self) -> MissedTickBehavior
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for MissedTickBehavior
Source§impl Debug for MissedTickBehavior
impl Debug for MissedTickBehavior
Source§impl Default for MissedTickBehavior
impl Default for MissedTickBehavior
Source§fn default() -> MissedTickBehavior
fn default() -> MissedTickBehavior
impl Eq for MissedTickBehavior
Source§impl PartialEq for MissedTickBehavior
impl PartialEq for MissedTickBehavior
Source§fn eq(&self, other: &MissedTickBehavior) -> bool
fn eq(&self, other: &MissedTickBehavior) -> bool
self and other values to be equal, and is used by ==.