diff --git a/crates/crates-io/lib.rs b/crates/crates-io/lib.rs index e0197568a6cb..3d7608a2900b 100644 --- a/crates/crates-io/lib.rs +++ b/crates/crates-io/lib.rs @@ -57,6 +57,7 @@ pub struct NewCrate { pub repository: Option, pub badges: BTreeMap>, pub links: Option, + pub rust_version: Option, } #[derive(Serialize, Deserialize)] diff --git a/src/cargo/core/manifest.rs b/src/cargo/core/manifest.rs index 182882dad75d..9f77b1301fba 100644 --- a/src/cargo/core/manifest.rs +++ b/src/cargo/core/manifest.rs @@ -110,6 +110,7 @@ pub struct ManifestMetadata { pub documentation: Option, // URL pub badges: BTreeMap>, pub links: Option, + pub rust_version: Option, } #[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)] diff --git a/src/cargo/ops/registry.rs b/src/cargo/ops/registry.rs index e04f7ba2cffd..cc15d47f56a6 100644 --- a/src/cargo/ops/registry.rs +++ b/src/cargo/ops/registry.rs @@ -345,6 +345,7 @@ fn transmit( ref categories, ref badges, ref links, + ref rust_version, } = *manifest.metadata(); let readme_content = readme .as_ref() @@ -398,6 +399,7 @@ fn transmit( license_file: license_file.clone(), badges: badges.clone(), links: links.clone(), + rust_version: rust_version.clone(), }, tarball, ) diff --git a/src/cargo/util/toml/mod.rs b/src/cargo/util/toml/mod.rs index 7b8c916cc658..12698b703100 100644 --- a/src/cargo/util/toml/mod.rs +++ b/src/cargo/util/toml/mod.rs @@ -2433,6 +2433,11 @@ impl TomlManifest { .transpose()? .unwrap_or_default(), links: package.links.clone(), + rust_version: package + .rust_version + .clone() + .map(|mw| mw.resolve("rust-version", || inherit()?.rust_version())) + .transpose()?, }; package.description = metadata .description