Spec-Zone.ru › Tokio

Функция sleep_until

pub fn sleep_until(deadline: Instant) -> Sleep ⓘ
Доступна только при включённой функции crate time.

Ожидает наступления момента deadline.

Во время ожидания завершения футуры sleep никакая работа не выполняется. Sleep работает с точностью до миллисекунд и не должна использоваться для задач, требующих таймеров с высокой точностью.

Чтобы регулярно запускать что-либо по расписанию, см. interval.

Отмена

Чтобы отменить экземпляр sleep, достаточно отбросить возвращённую футуру. Дополнительная очистка не требуется.

Примеры

Подождать 100 мс и вывести «Прошло 100 мс».

use tokio::time::{sleep_until, Instant, Duration};

sleep_until(Instant::now() + Duration::from_millis(100)).await;
println!("100 ms have elapsed");

Другие примеры см. в документации по типу Sleep.

Паники

Эта функция вызывает панику, если текущий таймер не установлен.

Это может произойти, если в builder не включены Builder::enable_time или Builder::enable_all.

Паника также может возникнуть, если таймер создан вне среды выполнения Tokio. Поэтому rt.block_on(sleep(...)) вызывает панику, поскольку функция выполняется вне среды выполнения. В то время как rt.block_on(async {sleep(...).await}) не вызывает панику. Это происходит потому, что обёртывание функции в async-блок делает её ленивой, поэтому она успешно выполняется внутри среды выполнения и не вызывает панику.

MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/time/fn.sleep_until.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API