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

Точка ожидания в Rust

Точка ожидания запускает функцию до следующей такой точки и потом забирает результат. Пока внутренняя работа не готова, исполнитель может переключиться на другие задачи.

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

cargo add tokio --features macros,rt-multi-thread,time

Команда допишет зависимость в описание пакета. Дальше правим точку входа в src/main.rs.

Запишем асинхронную функцию, которая возвращает число, и заберем результат в главной функции через точку ожидания:

#[tokio::main] async fn main() { let n = step().await; println!("{}", n); } async fn step() -> i32 { 2 }

На экране число 2. Запись с точкой ожидания не блокирует поток целиком: она лишь приостанавливает текущую асинхронную функцию до готовности step.

Тот же прием с другим литералом внутри шага:

#[tokio::main] async fn main() { let n = step().await; println!("{}", n); } async fn step() -> i32 { 5 }

Дано число:

let num = 7;

Сделайте асинхронную функцию, которая возвращает этот литерал, и выведите результат в главной функции через точку ожидания.

Скажите, что делает точка ожидания с асинхронной функцией, пока ее результат еще не готов.

Дано число:

let num = 3;

Две асинхронные функции возвращают литерал и его удвоение. Заберите оба результата по очереди в главной функции и выведите сумму.

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