actix_rt::time

# Function interval

    pub fn interval(period: Duration) -> Interval

Expand description

Creates new `Interval` that yields with interval of `period`. The first tick completes immediately. The default [`MissedTickBehavior`] is `Burst`, but this can be configured by calling `set_missed_tick_behavior`.

An interval will tick indefinitely. At any time, the `Interval` value can be dropped. This cancels the interval.

This function is equivalent to `interval_at(Instant::now(), period)`.

## §Panics

This function panics if `period` is zero.

## §Examples

    use tokio::time::{self, Duration};

    #[tokio::main]
    async fn main() {
        let mut interval = time::interval(Duration::from_millis(10));

        interval.tick().await; // ticks immediately
        interval.tick().await; // ticks after 10ms
        interval.tick().await; // ticks after 10ms

        // approximately 20ms have elapsed.
    }

A simple example using `interval` to execute a task every two seconds.

The difference between `interval` and `sleep` is that an `Interval` measures the time since the last tick, which means that `.tick().await` may wait for a shorter time than the duration specified for the interval if some time has passed between calls to `.tick().await`.

If the tick in the example below was replaced with `sleep`, the task would only be executed once every three seconds, and not every two seconds.

    use tokio::time;

    async fn task_that_takes_a_second() {
        println!("hello");
        time::sleep(time::Duration::from_secs(1)).await
    }

    #[tokio::main]
    async fn main() {
        let mut interval = time::interval(time::Duration::from_secs(2));
        for _i in 0..5 {
            interval.tick().await;
            task_that_takes_a_second().await;
        }
    }