From e8301839a98b1d6d77314fe34c2cdd2e742a6621 Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Thu, 4 Aug 2022 18:39:17 +1000 Subject: [PATCH] Use `AutoAbortJoinHandle` in `main::entry` so that the tasks will be cancelled if future returned by `entry()` is cancelled. Signed-off-by: Jiahao XU --- src/main.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index a794c52c..784f2a86 100644 --- a/src/main.rs +++ b/src/main.rs @@ -327,7 +327,7 @@ async fn entry(jobserver_client: LazyJobserverClient) -> Result<()> { let tasks: Vec<_> = crate_names .into_iter() .map(|crate_name| { - tokio::spawn(binstall::resolve( + AutoAbortJoinHandle::spawn(binstall::resolve( binstall_opts.clone(), crate_name, temp_dir_path.clone(), @@ -341,7 +341,7 @@ async fn entry(jobserver_client: LazyJobserverClient) -> Result<()> { // Confirm let mut resolutions = Vec::with_capacity(tasks.len()); for task in tasks { - resolutions.push(await_task(task).await?); + resolutions.push(task.await??); } uithread.confirm().await?; @@ -350,7 +350,7 @@ async fn entry(jobserver_client: LazyJobserverClient) -> Result<()> { resolutions .into_iter() .map(|resolution| { - tokio::spawn(binstall::install( + AutoAbortJoinHandle::spawn(binstall::install( resolution, binstall_opts.clone(), jobserver_client.clone(), @@ -369,7 +369,7 @@ async fn entry(jobserver_client: LazyJobserverClient) -> Result<()> { let crates_io_api_client = crates_io_api_client.clone(); let install_path = install_path.clone(); - tokio::spawn(async move { + AutoAbortJoinHandle::spawn(async move { let resolution = binstall::resolve( opts.clone(), crate_name, @@ -388,7 +388,7 @@ async fn entry(jobserver_client: LazyJobserverClient) -> Result<()> { let mut metadata_vec = Vec::with_capacity(tasks.len()); for task in tasks { - if let Some(metadata) = await_task(task).await? { + if let Some(metadata) = task.await?? { metadata_vec.push(metadata); } }