From a7fe84aa03d054ca07a47126d5e74f5fcfb7212c Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Tue, 14 Jan 2025 22:29:08 -0500 Subject: [PATCH] Avoid allocating when stripping source distribution extension (#10625) --- .../uv-distribution-filename/src/extension.rs | 23 +++++++++++-------- .../src/source_dist.rs | 8 +++---- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/crates/uv-distribution-filename/src/extension.rs b/crates/uv-distribution-filename/src/extension.rs index 645b3cec3..317970426 100644 --- a/crates/uv-distribution-filename/src/extension.rs +++ b/crates/uv-distribution-filename/src/extension.rs @@ -83,19 +83,24 @@ impl SourceDistExtension { _ => Err(ExtensionError::SourceDist), } } + + /// Return the name for the extension. + pub fn name(&self) -> &'static str { + match self { + Self::Zip => "zip", + Self::TarGz => "tar.gz", + Self::TarBz2 => "tar.bz2", + Self::TarXz => "tar.xz", + Self::TarZst => "tar.zst", + Self::TarLzma => "tar.lzma", + Self::Tar => "tar", + } + } } impl Display for SourceDistExtension { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - match self { - Self::Zip => f.write_str("zip"), - Self::TarGz => f.write_str("tar.gz"), - Self::TarBz2 => f.write_str("tar.bz2"), - Self::TarXz => f.write_str("tar.xz"), - Self::TarZst => f.write_str("tar.zst"), - Self::TarLzma => f.write_str("tar.lzma"), - Self::Tar => f.write_str("tar"), - } + f.write_str(self.name()) } } diff --git a/crates/uv-distribution-filename/src/source_dist.rs b/crates/uv-distribution-filename/src/source_dist.rs index 2dfacc090..4596c0f33 100644 --- a/crates/uv-distribution-filename/src/source_dist.rs +++ b/crates/uv-distribution-filename/src/source_dist.rs @@ -38,14 +38,14 @@ impl SourceDistFilename { package_name: &PackageName, ) -> Result { // Drop the extension (e.g., given `tar.gz`, drop `.tar.gz`). - if filename.len() <= extension.to_string().len() + 1 { + if filename.len() <= extension.name().len() + 1 { return Err(SourceDistFilenameError { filename: filename.to_string(), kind: SourceDistFilenameErrorKind::Extension, }); } - let stem = &filename[..(filename.len() - (extension.to_string().len() + 1))]; + let stem = &filename[..(filename.len() - (extension.name().len() + 1))]; if stem.len() <= package_name.as_ref().len() + "-".len() { return Err(SourceDistFilenameError { @@ -94,14 +94,14 @@ impl SourceDistFilename { }; // Drop the extension (e.g., given `tar.gz`, drop `.tar.gz`). - if filename.len() <= extension.to_string().len() + 1 { + if filename.len() <= extension.name().len() + 1 { return Err(SourceDistFilenameError { filename: filename.to_string(), kind: SourceDistFilenameErrorKind::Extension, }); } - let stem = &filename[..(filename.len() - (extension.to_string().len() + 1))]; + let stem = &filename[..(filename.len() - (extension.name().len() + 1))]; let Some((package_name, version)) = stem.rsplit_once('-') else { return Err(SourceDistFilenameError {