async
/await
На високому рівні асинхронний код Rust дуже схожий на “звичайний” послідовний код:
Speaker Notes
This slide should take about 6 minutes.
Ключові моменти:
-
Зауважте, що це спрощений приклад для демонстрації синтаксису. У ньому немає тривалої операції чи реального одночасного виконання!
-
Ключове слово “async” - це синтаксичний цукор. Компілятор замінює тип повернення на ф’ючерс.
-
Ви не можете зробити
main
асинхронним без додаткових інструкцій для компілятора щодо використання повернутого ф’ючерса. -
Вам потрібен виконавець для запуску асинхронного коду.
block_on
блокує поточний потік, доки наданий ф’ючерс не завершиться. -
.await
асинхронно очікує на завершення іншої операції. На відміну відblock_on
,.await
не блокує поточний потік. -
.await
можна використовувати тільки всередині функціїasync
(або блоку; вони будуть представлені пізніше).