Use `Cow` for source call (#3377)

This commit is contained in:
Charlie Marsh 2024-05-04 22:21:24 -04:00 committed by GitHub
parent 37635fda56
commit 6d73db2b1e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 6 additions and 5 deletions

View File

@ -1,3 +1,4 @@
use std::borrow::Cow;
use std::fmt::{Display, Formatter};
use pep508_rs::{MarkerEnvironment, UnnamedRequirement};
@ -58,16 +59,16 @@ impl UnresolvedRequirement {
}
/// Return the version specifier or URL for the requirement.
pub fn source(&self) -> Result<RequirementSource, ParsedUrlError> {
pub fn source(&self) -> Result<Cow<'_, RequirementSource>, ParsedUrlError> {
// TODO(konsti): This is a bad place to raise errors, we should have parsed the url earlier.
match self {
Self::Named(requirement) => Ok(requirement.source.clone()),
Self::Named(requirement) => Ok(Cow::Borrowed(&requirement.source)),
Self::Unnamed(requirement) => {
let parsed_url = ParsedUrl::try_from(requirement.url.to_url())?;
Ok(RequirementSource::from_parsed_url(
Ok(Cow::Owned(RequirementSource::from_parsed_url(
parsed_url,
requirement.url.clone(),
))
)))
}
}
}

View File

@ -365,7 +365,7 @@ impl<'a> SitePackages<'a> {
[distribution] => {
match RequirementSatisfaction::check(
distribution,
&entry.requirement.source()?,
entry.requirement.source()?.as_ref(),
)? {
RequirementSatisfaction::Mismatch | RequirementSatisfaction::OutOfDate => {
return Ok(SatisfiesResult::Unsatisfied(entry.requirement.to_string()))