Функция sleep_ until
pub fn sleep_until(deadline: Instant) -> Sleep ⓘ
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