pub enum MissedTickBehavior {
Burst,
Delay,
Skip,
}Expand description
This enum is mostly copied from tokio
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().
By default, when a tick is missed, Interval fires ticks as quickly as it
can until it is “caught up” in time to where it should be.
MissedTickBehavior can be used to specify a different behavior for
Interval to exhibit. Each variant represents a different strategy.
Note that because the executor cannot guarantee exact precision with timers, these strategies will only apply when the delay is greater than 5 milliseconds.
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 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more