Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpAcTm 162 of 288 menu
◀ ▶

Предел времени на ожидание в Rust

Если задача не успела, ожидание с пределом возвращает ошибку. Срок задают интервалом стандартной библиотеки из раздела даты и времени. Успех упакован в первую ветку результата, а превышение срока - во вторую.

Короткий сон внутри шага имитирует работу, которую мы ждем снаружи:

use std::time::Duration; #[tokio::main] async fn main() { let fut = slow(); match tokio::time::timeout(Duration::from_millis(50), fut).await { Ok(n) => println!("{}", n), Err(_) => println!("late"), } } async fn slow() -> i32 { tokio::time::sleep(Duration::from_millis(10)).await; 7 }

На экране 7: десять миллисекунд укладываются в предел пятидесяти. Разбор через match показывает обе ветки без принудительного извлечения значения.

Увеличим сон внутри шага, чтобы предел не выдержали:

use std::time::Duration; #[tokio::main] async fn main() { let fut = slow(); match tokio::time::timeout(Duration::from_millis(50), fut).await { Ok(n) => println!("{}", n), Err(_) => println!("late"), } } async fn slow() -> i32 { tokio::time::sleep(Duration::from_millis(80)).await; 7 }

Дано число:

let num = 50;

Шаг спит двадцать миллисекунд и возвращает этот литерал. Предел ожидания - сто миллисекунд. Разберите ответ и выведите число или текст late.

Скажите, какой тип у выражения с пределом времени после точки ожидания: что лежит в ветке успеха и что во второй ветке.

Дано число:

let num = 3;

Сделайте шаг без сна, который сразу отдает литерал. Ограничьте ожидание десятью миллисекундами и выведите результат через match.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить