From 35f6ea204bc5a12d3927e32dc87c4f9ef9e8d655 Mon Sep 17 00:00:00 2001 From: konsti Date: Fri, 29 Dec 2023 16:49:12 +0100 Subject: [PATCH] Remove Box::pin usages (#738) Rust 1.75 update follow-up, simplifies the code. --- crates/puffin-build/src/lib.rs | 12 ++---- crates/puffin-dispatch/src/lib.rs | 53 ++++++++++++-------------- crates/puffin-resolver/src/resolver.rs | 38 +++++++++--------- 3 files changed, 47 insertions(+), 56 deletions(-) diff --git a/crates/puffin-build/src/lib.rs b/crates/puffin-build/src/lib.rs index f27110363..226260e10 100644 --- a/crates/puffin-build/src/lib.rs +++ b/crates/puffin-build/src/lib.rs @@ -4,7 +4,6 @@ use std::env; use std::fmt::{Display, Formatter}; -use std::future::Future; use std::io; use std::io::BufRead; use std::path::{Path, PathBuf}; @@ -543,15 +542,12 @@ impl SourceBuild { } impl SourceBuildTrait for SourceBuild { - fn metadata(&mut self) -> impl Future>> + Send { - Box::pin(async { Ok(self.get_metadata_without_build().await?) }) + async fn metadata(&mut self) -> anyhow::Result> { + Ok(self.get_metadata_without_build().await?) } - fn wheel<'a>( - &'a self, - wheel_dir: &'a Path, - ) -> impl Future> + Send + 'a { - Box::pin(async { Ok(self.build(wheel_dir).await?) }) + async fn wheel<'a>(&'a self, wheel_dir: &'a Path) -> anyhow::Result { + Ok(self.build(wheel_dir).await?) } } diff --git a/crates/puffin-dispatch/src/lib.rs b/crates/puffin-dispatch/src/lib.rs index 4eb97e2f7..8a7437186 100644 --- a/crates/puffin-dispatch/src/lib.rs +++ b/crates/puffin-dispatch/src/lib.rs @@ -81,32 +81,28 @@ impl<'a> BuildContext for BuildDispatch<'a> { self.no_build } - #[instrument(skip(self, requirements), fields(requirements = requirements.iter().map(ToString::to_string).join(", ")))] - fn resolve<'data>( - &'data self, - requirements: &'data [Requirement], - ) -> impl Future> + Send + 'data { - Box::pin(async { - let markers = self.interpreter.markers(); - let tags = self.interpreter.tags()?; - let resolver = Resolver::new( - Manifest::simple(requirements.to_vec()), - self.options, - markers, - tags, - self.client, - self, - ); - let graph = resolver.resolve().await.with_context(|| { - format!( - "No solution found when resolving: {}", - requirements.iter().map(ToString::to_string).join(", "), - ) - })?; - Ok(Resolution::from(graph)) - }) + //#[instrument(skip(self, requirements), fields(requirements = requirements.iter().map(ToString::to_string).join(", ")))] + async fn resolve<'data>(&'data self, requirements: &'data [Requirement]) -> Result { + let markers = self.interpreter.markers(); + let tags = self.interpreter.tags()?; + let resolver = Resolver::new( + Manifest::simple(requirements.to_vec()), + self.options, + markers, + tags, + self.client, + self, + ); + let graph = resolver.resolve().await.with_context(|| { + format!( + "No solution found when resolving: {}", + requirements.iter().map(ToString::to_string).join(", "), + ) + })?; + Ok(Resolution::from(graph)) } + #[allow(clippy::manual_async_fn)] // TODO(konstin): rustc 1.75 gets into a type inference cycle with async fn #[instrument( skip(self, resolution, venv), fields( @@ -119,7 +115,7 @@ impl<'a> BuildContext for BuildDispatch<'a> { resolution: &'data Resolution, venv: &'data Virtualenv, ) -> impl Future> + Send + 'data { - Box::pin(async move { + async move { debug!( "Installing in {} in {}", resolution @@ -212,9 +208,10 @@ impl<'a> BuildContext for BuildDispatch<'a> { } Ok(()) - }) + } } + #[allow(clippy::manual_async_fn)] // TODO(konstin): rustc 1.75 gets into a type inference cycle with async fn #[instrument(skip_all, fields(package_id = package_id, subdirectory = ?subdirectory))] fn setup_build<'data>( &'data self, @@ -223,7 +220,7 @@ impl<'a> BuildContext for BuildDispatch<'a> { package_id: &'data str, build_kind: BuildKind, ) -> impl Future> + Send + 'data { - Box::pin(async move { + async move { if self.no_build { bail!("Building source distributions is disabled"); } @@ -238,6 +235,6 @@ impl<'a> BuildContext for BuildDispatch<'a> { ) .await?; Ok(builder) - }) + } } } diff --git a/crates/puffin-resolver/src/resolver.rs b/crates/puffin-resolver/src/resolver.rs index 344306f0b..7abfdfe44 100644 --- a/crates/puffin-resolver/src/resolver.rs +++ b/crates/puffin-resolver/src/resolver.rs @@ -109,32 +109,30 @@ impl<'a, Context: BuildContext + Send + Sync> ResolverProvider &'io self, package_name: &'io PackageName, ) -> impl Future + Send + 'io { - Box::pin( - self.client - .simple(package_name) - .map_ok(move |(index, base, metadata)| { - ( - index, - base, - VersionMap::from_metadata( - metadata, - package_name, - self.tags, - self.markers, - self.build_context.interpreter(), - &self.allowed_yanks, - self.exclude_newer.as_ref(), - ), - ) - }), - ) + self.client + .simple(package_name) + .map_ok(move |(index, base, metadata)| { + ( + index, + base, + VersionMap::from_metadata( + metadata, + package_name, + self.tags, + self.markers, + self.build_context.interpreter(), + &self.allowed_yanks, + self.exclude_newer.as_ref(), + ), + ) + }) } fn get_or_build_wheel_metadata<'io>( &'io self, dist: &'io Dist, ) -> impl Future + Send + 'io { - Box::pin(self.fetcher.get_or_build_wheel_metadata(dist)) + self.fetcher.get_or_build_wheel_metadata(dist) } /// Set the [`puffin_distribution::Reporter`] to use for this installer.