Spec-Zone.ru › Tokio

Функция sleep

pub fn sleep(duration: Duration) -> Sleep ⓘ
Доступно только при включённой возможности crate time.

Ожидает истечения duration.

Эквивалентно sleep_until(Instant::now() + duration). Асинхронный аналог std::thread::sleep.

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

Чтобы выполнять действия регулярно по расписанию, см. interval.

Отмена

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

Примеры

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

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

sleep(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.html

Spec-Zone.ru

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