async/await

На високому рівні асинхронний код Rust дуже схожий на “звичайний” послідовний код:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Speaker Notes

This slide should take about 6 minutes.

Ключові моменти:

  • Зауважте, що це спрощений приклад для демонстрації синтаксису. У ньому немає тривалої операції чи реального одночасного виконання!

  • Ключове слово “async” - це синтаксичний цукор. Компілятор замінює тип повернення на ф’ючерс.

  • Ви не можете зробити main асинхронним без додаткових інструкцій для компілятора щодо використання повернутого ф’ючерса.

  • Вам потрібен виконавець для запуску асинхронного коду. block_on блокує поточний потік, доки наданий ф’ючерс не завершиться.

  • .await асинхронно очікує на завершення іншої операції. На відміну від block_on, .await не блокує поточний потік.

  • .await можна використовувати тільки всередині функції async (або блоку; вони будуть представлені пізніше).