Skip to content

Commit 5d06adf

Browse files
committed
refactor(schema): Adopt RustVersion
1 parent 590a6b2 commit 5d06adf

File tree

12 files changed

+58
-58
lines changed

12 files changed

+58
-58
lines changed

src/cargo/core/manifest.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ use crate::core::{Dependency, PackageId, PackageIdSpec, SourceId, Summary};
1818
use crate::core::{Edition, Feature, Features, WorkspaceConfig};
1919
use crate::util::errors::*;
2020
use crate::util::interning::InternedString;
21-
use crate::util::{short_hash, Config, Filesystem, RustVersion};
21+
use crate::util::{short_hash, Config, Filesystem};
22+
use crate::util_schemas::manifest::RustVersion;
2223
use crate::util_schemas::manifest::{TomlManifest, TomlProfiles};
2324

2425
pub enum EitherManifest {

src/cargo/core/package.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ use crate::util::network::http::HttpTimeout;
3232
use crate::util::network::retry::{Retry, RetryResult};
3333
use crate::util::network::sleep::SleepTracker;
3434
use crate::util::toml::prepare_for_publish;
35-
use crate::util::RustVersion;
3635
use crate::util::{self, internal, Config, Progress, ProgressStyle};
36+
use crate::util_schemas::manifest::RustVersion;
3737

3838
pub const MANIFEST_PREAMBLE: &str = "\
3939
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO

src/cargo/core/resolver/version_prefs.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::collections::{HashMap, HashSet};
66

77
use crate::core::{Dependency, PackageId, Summary};
88
use crate::util::interning::InternedString;
9-
use crate::util::RustVersion;
9+
use crate::util_schemas::manifest::RustVersion;
1010

1111
/// A collection of preferences for particular package versions.
1212
///

src/cargo/core/summary.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::core::{Dependency, PackageId, SourceId};
22
use crate::util::interning::InternedString;
33
use crate::util::CargoResult;
4-
use crate::util::RustVersion;
4+
use crate::util_schemas::manifest::RustVersion;
55
use anyhow::bail;
66
use semver::Version;
77
use std::collections::{BTreeMap, HashMap, HashSet};

src/cargo/core/workspace.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ use crate::util::edit_distance;
2525
use crate::util::errors::{CargoResult, ManifestError};
2626
use crate::util::interning::InternedString;
2727
use crate::util::toml::{read_manifest, InheritableFields};
28-
use crate::util::RustVersion;
2928
use crate::util::{config::ConfigRelativePath, Config, Filesystem, IntoUrl};
29+
use crate::util_schemas::manifest::RustVersion;
3030
use crate::util_schemas::manifest::{TomlDependency, TomlProfiles};
3131
use cargo_util::paths;
3232
use cargo_util::paths::normalize_path;

src/cargo/ops/cargo_add/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ use crate::util::toml_mut::dependency::WorkspaceSource;
3535
use crate::util::toml_mut::is_sorted;
3636
use crate::util::toml_mut::manifest::DepTable;
3737
use crate::util::toml_mut::manifest::LocalManifest;
38-
use crate::util::RustVersion;
38+
use crate::util_schemas::manifest::RustVersion;
3939
use crate::CargoResult;
4040
use crate::Config;
4141
use crate_spec::CrateSpec;

src/cargo/ops/resolve.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ use crate::ops;
7171
use crate::sources::PathSource;
7272
use crate::util::cache_lock::CacheLockMode;
7373
use crate::util::errors::CargoResult;
74-
use crate::util::RustVersion;
7574
use crate::util::{profile, CanonicalUrl};
75+
use crate::util_schemas::manifest::RustVersion;
7676
use anyhow::Context as _;
7777
use std::collections::{HashMap, HashSet};
7878
use tracing::{debug, trace};

src/cargo/sources/registry/index.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ use crate::sources::registry::{LoadResponse, RegistryData};
9292
use crate::util::cache_lock::CacheLockMode;
9393
use crate::util::interning::InternedString;
9494
use crate::util::IntoUrl;
95-
use crate::util::{internal, CargoResult, Config, Filesystem, OptVersionReq, RustVersion};
95+
use crate::util::{internal, CargoResult, Config, Filesystem, OptVersionReq};
96+
use crate::util_schemas::manifest::RustVersion;
9697
use anyhow::bail;
9798
use cargo_util::{paths, registry::make_dep_path};
9899
use semver::Version;

src/cargo/util/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ pub use self::progress::{Progress, ProgressStyle};
2323
pub use self::queue::Queue;
2424
pub use self::restricted_names::validate_package_name;
2525
pub use self::rustc::Rustc;
26-
pub use self::semver_ext::{OptVersionReq, RustVersion};
26+
pub use self::semver_ext::OptVersionReq;
2727
pub use self::vcs::{existing_vcs_repo, FossilRepo, GitRepo, HgRepo, PijulRepo};
2828
pub use self::workspace::{
2929
add_path_args, path_args, print_available_benches, print_available_binaries,

src/cargo/util/semver_ext.rs

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
use std::fmt::{self, Display};
22

33
use semver::{Op, Version, VersionReq};
4-
use serde_untagged::UntaggedEnumVisitor;
54

6-
use crate::util_semver::PartialVersion;
75
use crate::util_semver::VersionExt as _;
86

97
#[derive(PartialEq, Eq, Hash, Clone, Debug)]
@@ -125,48 +123,3 @@ impl From<VersionReq> for OptVersionReq {
125123
OptVersionReq::Req(req)
126124
}
127125
}
128-
129-
#[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Debug, serde::Serialize)]
130-
#[serde(transparent)]
131-
pub struct RustVersion(PartialVersion);
132-
133-
impl std::ops::Deref for RustVersion {
134-
type Target = PartialVersion;
135-
136-
fn deref(&self) -> &Self::Target {
137-
&self.0
138-
}
139-
}
140-
141-
impl std::str::FromStr for RustVersion {
142-
type Err = anyhow::Error;
143-
144-
fn from_str(value: &str) -> Result<Self, Self::Err> {
145-
let partial = value.parse::<PartialVersion>()?;
146-
if partial.pre.is_some() {
147-
anyhow::bail!("unexpected prerelease field, expected a version like \"1.32\"")
148-
}
149-
if partial.build.is_some() {
150-
anyhow::bail!("unexpected prerelease field, expected a version like \"1.32\"")
151-
}
152-
Ok(Self(partial))
153-
}
154-
}
155-
156-
impl<'de> serde::Deserialize<'de> for RustVersion {
157-
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
158-
where
159-
D: serde::Deserializer<'de>,
160-
{
161-
UntaggedEnumVisitor::new()
162-
.expecting("SemVer version")
163-
.string(|value| value.parse().map_err(serde::de::Error::custom))
164-
.deserialize(deserializer)
165-
}
166-
}
167-
168-
impl Display for RustVersion {
169-
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
170-
self.0.fmt(f)
171-
}
172-
}

src/cargo/util/toml/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ use crate::util::interning::InternedString;
2626
use crate::util::restricted_names;
2727
use crate::util::{
2828
self, config::ConfigRelativePath, validate_package_name, Config, IntoUrl, OptVersionReq,
29-
RustVersion,
3029
};
3130
use crate::util_schemas::manifest;
31+
use crate::util_schemas::manifest::RustVersion;
3232

3333
mod embedded;
3434
mod targets;

src/cargo/util_schemas/manifest.rs

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ use serde::ser;
1515
use serde::{Deserialize, Serialize};
1616
use serde_untagged::UntaggedEnumVisitor;
1717

18-
use crate::util::RustVersion;
1918
use crate::util_schemas::core::PackageIdSpec;
19+
use crate::util_semver::PartialVersion;
2020

2121
/// This type is used to deserialize `Cargo.toml` files.
2222
#[derive(Debug, Deserialize, Serialize)]
@@ -1207,6 +1207,51 @@ pub enum TomlLintLevel {
12071207
Allow,
12081208
}
12091209

1210+
#[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Debug, serde::Serialize)]
1211+
#[serde(transparent)]
1212+
pub struct RustVersion(PartialVersion);
1213+
1214+
impl std::ops::Deref for RustVersion {
1215+
type Target = PartialVersion;
1216+
1217+
fn deref(&self) -> &Self::Target {
1218+
&self.0
1219+
}
1220+
}
1221+
1222+
impl std::str::FromStr for RustVersion {
1223+
type Err = anyhow::Error;
1224+
1225+
fn from_str(value: &str) -> Result<Self, Self::Err> {
1226+
let partial = value.parse::<PartialVersion>()?;
1227+
if partial.pre.is_some() {
1228+
anyhow::bail!("unexpected prerelease field, expected a version like \"1.32\"")
1229+
}
1230+
if partial.build.is_some() {
1231+
anyhow::bail!("unexpected prerelease field, expected a version like \"1.32\"")
1232+
}
1233+
Ok(Self(partial))
1234+
}
1235+
}
1236+
1237+
impl<'de> serde::Deserialize<'de> for RustVersion {
1238+
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1239+
where
1240+
D: serde::Deserializer<'de>,
1241+
{
1242+
UntaggedEnumVisitor::new()
1243+
.expecting("SemVer version")
1244+
.string(|value| value.parse().map_err(serde::de::Error::custom))
1245+
.deserialize(deserializer)
1246+
}
1247+
}
1248+
1249+
impl Display for RustVersion {
1250+
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
1251+
self.0.fmt(f)
1252+
}
1253+
}
1254+
12101255
#[derive(Copy, Clone, Debug)]
12111256
pub struct InvalidCargoFeatures {}
12121257

0 commit comments

Comments
 (0)