Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpAcSp 160 of 288 menu
◀ ▶

Фоновая задача исполнителя в Rust

Задачу отдают исполнителю и ждут ее ручку. Пока фоновый блок выполняется, главная функция может делать другие шаги, а завершение узнают по ручке через точку ожидания.

Запустим отдельную асинхронную работу и дождемся числа из ручки:

#[tokio::main] async fn main() { let handle = tokio::spawn(async move { 3 }); match handle.await { Ok(n) => println!("{}", n), Err(_) => println!("failed"), } }

На экране 3. Ручка живет в главной функции и хранит связь с фоновой задачей, пока к ней не обратятся через точку ожидания.

Замыкание с move забирает нужные данные во владение, если они понадобятся внутри блока:

#[tokio::main] async fn main() { let base = 10; let handle = tokio::spawn(async move { base + 2 }); match handle.await { Ok(n) => println!("{}", n), Err(_) => println!("failed"), } }

Дано число:

let num = 5;

Отдайте исполнителю блок, который возвращает этот литерал. Сохраните ручку, разберите ответ через сопоставление и выведите число.

Скажите, зачем внутри фонового блока иногда пишут move перед замыканием.

Дано число:

let num = 2;

Выведите start, запустите фоновую работу с этим литералом, дождитесь ручку и выведите end.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить