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

Несколько ожиданий сразу в Rust

Несколько ожиданий можно собрать в один результат: исполнитель дождется каждого шага и вернет значения парой или большим кортежем.

Подключим макрос, который ждет два шага одновременно:

#[tokio::main] async fn main() { let (a, b) = tokio::join!(step_a(), step_b()); println!("{} {}", a, b); } async fn step_a() -> i32 { 2 } async fn step_b() -> i32 { 5 }

На экране 2 5. Оба шага могут идти параллельно на исполнителе, а главная функция одной точкой ожидания получает оба числа.

Тот же прием, когда один шаг чуть дольше из-за короткого сна:

#[tokio::main] async fn main() { let (x, y) = tokio::join!(quick(), slow()); println!("{} {}", x, y); } async fn quick() -> i32 { 1 } async fn slow() -> i32 { tokio::time::sleep(std::time::Duration::from_millis(20)).await; 9 }

Дано число:

let num = 4;

Два асинхронных шага возвращают литерал и его удвоение. Соберите оба результата одной общей точкой ожидания и выведите их через пробел.

Скажите, сколько значений вернет сопоставление с двумя именами слева, если в макрос передали ровно два асинхронных шага.

Дано число:

let num = 6;

Один шаг сразу отдает литерал, другой после короткого сна возвращает сумму литерала с единицей. Выведите оба ответа одной строкой.

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