async/await
На високому рівні асинхронний код Rust дуже схожий на “звичайний” послідовний код:
use futures::executor::block_on; async fn count_to(count: i32) { for i in 0..count { println!("Підрахунок: {i}!"); } } async fn async_main(count: i32) { count_to(count).await; } fn main() { block_on(async_main(10)); }
Ключові моменти:
- 
Зауважте, що це спрощений приклад для демонстрації синтаксису. У ньому немає тривалої операції чи реального одночасного виконання!
 - 
Ключове слово “async” - це синтаксичний цукор. Компілятор замінює тип повернення на ф’ючерс.
 - 
Ви не можете зробити
mainасинхронним без додаткових інструкцій для компілятора щодо використання повернутого ф’ючерса. - 
Вам потрібен виконавець для запуску асинхронного коду.
block_onблокує поточний потік, доки наданий ф’ючерс не завершиться. - 
.awaitасинхронно очікує на завершення іншої операції. На відміну відblock_on,.awaitне блокує поточний потік. - 
.awaitможна використовувати тільки всередині функціїasync(або блоку; вони будуть представлені пізніше).