Skip to content

Commit

Permalink
Avoid allocating when stripping source distribution extension (astral…
Browse files Browse the repository at this point in the history
  • Loading branch information
charliermarsh authored Jan 15, 2025
1 parent 9e06aa8 commit a7fe84a
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 13 deletions.
23 changes: 14 additions & 9 deletions crates/uv-distribution-filename/src/extension.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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())
}
}

Expand Down
8 changes: 4 additions & 4 deletions crates/uv-distribution-filename/src/source_dist.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,14 @@ impl SourceDistFilename {
package_name: &PackageName,
) -> Result<Self, SourceDistFilenameError> {
// 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 {
Expand Down Expand Up @@ -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 {
Expand Down

0 comments on commit a7fe84a

Please sign in to comment.