diff --git a/src/cargo/core/dependency.rs b/src/cargo/core/dependency.rs index fb185c0fb5e..975238e66dd 100644 --- a/src/cargo/core/dependency.rs +++ b/src/cargo/core/dependency.rs @@ -11,7 +11,7 @@ use serde::Serialize; use crate::core::interning::InternedString; use crate::core::{PackageId, SourceId, Summary}; use crate::util::errors::{CargoResult, CargoResultExt}; -use crate::util::{Cfg, CfgExpr, Config, SemVersionReq, ToSemverReq, ToSemverReqExact}; +use crate::util::{Cfg, CfgExpr, Config, SemVersionReq, ToSemverReq}; /// Information about a dependency requested by a Cargo manifest. /// Cheap to copy. @@ -361,7 +361,7 @@ impl Dependency { self.source_id(), id ); - self.set_version_req(id.version().to_semver_req_exact()) + self.set_version_req(SemVersionReq::exact(id.sem_version())) .set_source_id(id.source_id()) } diff --git a/src/cargo/core/package_id_spec.rs b/src/cargo/core/package_id_spec.rs index e6416432081..2a91cdce920 100644 --- a/src/cargo/core/package_id_spec.rs +++ b/src/cargo/core/package_id_spec.rs @@ -1,7 +1,6 @@ use std::collections::HashMap; use std::fmt; -use semver::Version; use serde::{de, ser}; use url::Url; @@ -143,8 +142,8 @@ impl PackageIdSpec { &self.name } - pub fn version(&self) -> Option<&Version> { - self.version.map(|sv| sv.value()) + pub fn version(&self) -> Option { + self.version } pub fn url(&self) -> Option<&Url> { diff --git a/src/cargo/core/registry.rs b/src/cargo/core/registry.rs index d4aeaf30148..dd2a936ae1d 100644 --- a/src/cargo/core/registry.rs +++ b/src/cargo/core/registry.rs @@ -7,7 +7,7 @@ use crate::core::PackageSet; use crate::core::{Dependency, PackageId, Source, SourceId, SourceMap, Summary}; use crate::sources::config::SourceConfigMap; use crate::util::errors::{CargoResult, CargoResultExt}; -use crate::util::{profile, Config, ToSemverReqExact}; +use crate::util::{profile, Config, SemVersionReq}; /// Source of information about a group of packages. /// @@ -644,7 +644,7 @@ fn lock(locked: &LockedMap, patches: &HashMap>, summary: Sum if patch_locked { trace!("\tthird hit on {}", patch_id); - let req = patch_id.version().to_semver_req_exact(); + let req = SemVersionReq::exact(patch_id.sem_version()); let mut dep = dep; dep.set_version_req(req); return dep; diff --git a/src/cargo/util/mod.rs b/src/cargo/util/mod.rs index a9e8ff65388..5aacf3d8ea3 100644 --- a/src/cargo/util/mod.rs +++ b/src/cargo/util/mod.rs @@ -19,7 +19,7 @@ pub use self::progress::{Progress, ProgressStyle}; pub use self::read2::read2; pub use self::rustc::Rustc; pub use self::sha256::Sha256; -pub use self::to_semver::{SemVersion, SemVersionReq, ToSemver, ToSemverReq, ToSemverReqExact}; +pub use self::to_semver::{SemVersion, SemVersionReq, ToSemver, ToSemverReq}; pub use self::to_url::ToUrl; pub use self::vcs::{existing_vcs_repo, FossilRepo, GitRepo, HgRepo, PijulRepo}; diff --git a/src/cargo/util/to_semver.rs b/src/cargo/util/to_semver.rs index 721a9a2ddbd..dfa7859ffc2 100644 --- a/src/cargo/util/to_semver.rs +++ b/src/cargo/util/to_semver.rs @@ -120,6 +120,10 @@ impl SemVersionReq { SemVersionReq::new(VersionReq::any()) } + pub fn exact(version: SemVersion) -> SemVersionReq { + SemVersionReq::new(VersionReq::exact(version.inner)) + } + pub fn value(&self) -> &'static VersionReq { self.inner } @@ -165,14 +169,3 @@ impl<'a> ToSemverReq for &'a str { Ok(SemVersionReq::new(VersionReq::parse(self)?)) } } - - -pub trait ToSemverReqExact { - fn to_semver_req_exact(self) -> SemVersionReq; -} - -impl<'a> ToSemverReqExact for &'a Version { - fn to_semver_req_exact(self) -> SemVersionReq { - SemVersionReq::new(VersionReq::exact(self)) - } -} diff --git a/src/cargo/util/toml/mod.rs b/src/cargo/util/toml/mod.rs index 90699333a44..379ea314761 100644 --- a/src/cargo/util/toml/mod.rs +++ b/src/cargo/util/toml/mod.rs @@ -20,7 +20,7 @@ use crate::core::{GitReference, PackageIdSpec, SourceId, WorkspaceConfig, Worksp use crate::sources::{CRATES_IO_INDEX, CRATES_IO_REGISTRY}; use crate::util::errors::{CargoResult, CargoResultExt, ManifestError}; use crate::util::paths; -use crate::util::{self, validate_package_name, Config, SemVersion, ToUrl, ToSemverReqExact}; +use crate::util::{self, validate_package_name, Config, SemVersion, SemVersionReq, ToUrl}; mod targets; use self::targets::targets; @@ -1180,7 +1180,7 @@ impl TomlManifest { spec ) })?; - dep.set_version_req(version.to_semver_req_exact()); + dep.set_version_req(SemVersionReq::exact(version)); } replace.push((spec, dep)); }