Ключевое слово async
Ключевое слово async превращает обычную функцию или блок кода в асинхронную. Такая функция не выполняется сразу при вызове, а возвращает объект, реализующий трейт Future. Этот объект представляет собой отложенное вычисление, которое будет выполнено только тогда, когда его начнут опрашивать с помощью исполнителя (executor). Ключевое слово async не принимает параметров, но может комбинироваться с await для приостановки выполнения до готовности другого Future.
Синтаксис
async fn function_name() -> ReturnType
{
// body
}
Пример
Давайте создадим простую асинхронную функцию, которая возвращает число, и вызовем её внутри асинхронного блока:
async fn get_number() -> i32
{
42
}
fn main()
{
let future = get_number();
// future is not executed yet
println!("Future created");
}
Результат выполнения кода:
"Future created"
Пример
Давайте используем асинхронный блок и await для получения значения из Future:
async fn get_number() -> i32
{
42
}
fn main()
{
let res = async {
let num = get_number().await;
num + 1
};
println!("Async block created");
}
Результат выполнения кода:
"Async block created"