РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
27 of 1245 menu

Ключевое слово async

Ключевое слово async применяется перед объявлением функции или перед блоком кода и превращает их в асинхронную операцию. Такая функция не выполняется сразу при вызове, а возвращает значение, реализующее типаж Future. Чтобы получить результат, такое значение нужно дождаться с помощью оператора await внутри другой асинхронной функции или блока. Параметров само ключевое слово не принимает.

Синтаксис

async fn name() { // body }

Пример

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

async fn get_value() -> i32 { 42 } fn main() { let res = get_value(); println!("future created"); }

Результат выполнения кода:

"future created"

Пример

Давайте создадим асинхронный блок и получим из него значение через await:

async fn get_value() -> i32 { 42 } fn main() { let res = async { get_value().await + 1 }; println!("async block created"); }

Результат выполнения кода:

"async block created"

Пример

Давайте объявим асинхронную функцию с параметром и дождёмся её вызова внутри другой асинхронной функции:

async fn double(x: i32) -> i32 { x * 2 } async fn run() -> i32 { double(21).await } fn main() { let res = run(); println!("run future created"); }

Результат выполнения кода:

"run future created"

Пример

Давайте проверим, что вызов асинхронной функции возвращает Future, а не готовое значение:

async fn get_value() -> i32 { 12345 } fn main() { let res = get_value(); println!("value is not computed yet"); }

Результат выполнения кода:

"value is not computed yet"

Смотрите также

  • ключевое слово await,
    которое дожидается результата Future
  • ключевое слово fn,
    которое объявляет функцию
  • ключевое слово move,
    которое перемещает захваченные значения в замыкание или блок
  • ключевое слово return,
    которое возвращает значение из функции
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить