From 73a794dc13e7255500f23bd5b6254e9b827ab47c Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Mon, 12 Dec 2022 19:42:11 +1100 Subject: [PATCH] Optimization: Box fut `Remote::get_redirected_final_url` in `GhCrateMeta::find` (#600) * Box fut `Remote::get_redirected_final_url` in `GhCrateMeta::find` Since the other await point in `GhCrateMeta::find` only needs `Arc` and `handles` to be saved, which is much smaller than the future returned by `Remote::get_redirected_final_url` * Refactor: Simplify `wait_on_cancellation_signal` Signed-off-by: Jiahao XU --- crates/binstalk/src/fetchers/gh_crate_meta.rs | 6 +----- crates/binstalk/src/helpers/signal.rs | 10 +++------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/crates/binstalk/src/fetchers/gh_crate_meta.rs b/crates/binstalk/src/fetchers/gh_crate_meta.rs index 5e865df2..790ef084 100644 --- a/crates/binstalk/src/fetchers/gh_crate_meta.rs +++ b/crates/binstalk/src/fetchers/gh_crate_meta.rs @@ -86,11 +86,7 @@ impl super::Fetcher for GhCrateMeta { fn find(self: Arc) -> AutoAbortJoinHandle> { AutoAbortJoinHandle::spawn(async move { let repo = if let Some(repo) = self.data.repo.as_deref() { - Some( - self.client - .get_redirected_final_url(Url::parse(repo)?) - .await?, - ) + Some(Box::pin(self.client.get_redirected_final_url(Url::parse(repo)?)).await?) } else { None }; diff --git a/crates/binstalk/src/helpers/signal.rs b/crates/binstalk/src/helpers/signal.rs index 36a25f6e..3ad352b4 100644 --- a/crates/binstalk/src/helpers/signal.rs +++ b/crates/binstalk/src/helpers/signal.rs @@ -41,16 +41,12 @@ fn ignore_signals() -> io::Result<()> { /// that also returns `Ok(())`. async fn wait_on_cancellation_signal() -> Result<(), io::Error> { #[cfg(unix)] - async fn inner() -> Result<(), io::Error> { - unix::wait_on_cancellation_signal_unix().await - } + unix::wait_on_cancellation_signal_unix().await?; #[cfg(not(unix))] - async fn inner() -> Result<(), io::Error> { - signal::ctrl_c().await - } + signal::ctrl_c().await?; - inner().await + Ok(()) } #[cfg(unix)]