From 8d8a8b6f76195dd5ccc5858d69a76618ddf61baa Mon Sep 17 00:00:00 2001 From: Martin Geisler Date: Thu, 20 Jun 2024 00:29:42 +0200 Subject: [PATCH] Simplify `join_all` example This keeps the original structure, but removes 7 lines of code. --- src/concurrency/async-control-flow/join.rs | 23 ++++++++-------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/src/concurrency/async-control-flow/join.rs b/src/concurrency/async-control-flow/join.rs index 2fae1c87..1a5c2f27 100644 --- a/src/concurrency/async-control-flow/join.rs +++ b/src/concurrency/async-control-flow/join.rs @@ -1,24 +1,17 @@ -use anyhow::Result; -use futures::future; +use futures::future::join_all; use reqwest; -use std::collections::HashMap; -async fn size_of_page(url: &str) -> Result { +async fn size_of_page(url: &str) -> reqwest::Result { let resp = reqwest::get(url).await?; Ok(resp.text().await?.len()) } #[tokio::main] async fn main() { - let urls: [&str; 4] = [ - "https://google.com", - "https://httpbin.org/ip", - "https://play.rust-lang.org/", - "BAD_URL", - ]; - let futures_iter = urls.into_iter().map(size_of_page); - let results = future::join_all(futures_iter).await; - let page_sizes_dict: HashMap<&str, Result> = - urls.into_iter().zip(results.into_iter()).collect(); - println!("{:?}", page_sizes_dict); + let urls = ["https://rust-lang.org", "https://httpbin.org/ip", "BAD_URL"]; + let futures = urls.into_iter().map(size_of_page); + let results = join_all(futures).await; + for (url, result) in urls.into_iter().zip(results) { + println!("{url}: {result:?}"); + } }