diff --git a/src/cargo/util/toml/mod.rs b/src/cargo/util/toml/mod.rs index 3253ed2b1..fe49fb34d 100644 --- a/src/cargo/util/toml/mod.rs +++ b/src/cargo/util/toml/mod.rs @@ -1058,43 +1058,6 @@ impl MaybeWorkspace { } } -fn maybe_workspace_vec_string<'de, D>( - deserializer: D, -) -> Result>>, D::Error> -where - D: de::Deserializer<'de>, -{ - struct Visitor; - - impl<'de> de::Visitor<'de> for Visitor { - type Value = Option>>; - - fn expecting(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result { - formatter.write_str("vector of strings") - } - - fn visit_seq(self, v: V) -> Result - where - V: de::SeqAccess<'de>, - { - let seq = de::value::SeqAccessDeserializer::new(v); - let defined = Vec::::deserialize(seq).map(MaybeWorkspace::Defined)?; - Ok(Some(defined)) - } - - fn visit_map(self, map: V) -> Result - where - V: de::MapAccess<'de>, - { - let mvd = de::value::MapAccessDeserializer::new(map); - let workspace = TomlWorkspaceField::deserialize(mvd).map(MaybeWorkspace::Workspace)?; - Ok(Some(workspace)) - } - } - - deserializer.deserialize_any(Visitor) -} - #[derive(Deserialize, Serialize, Clone, Debug)] pub struct TomlWorkspaceField { workspace: bool, @@ -1114,8 +1077,6 @@ pub struct TomlProject { name: InternedString, #[serde(deserialize_with = "version_trim_whitespace")] version: MaybeWorkspace, - #[serde(default)] - #[serde(deserialize_with = "maybe_workspace_vec_string")] authors: Option>>, build: Option, metabuild: Option, @@ -1124,11 +1085,7 @@ pub struct TomlProject { #[serde(rename = "forced-target")] forced_target: Option, links: Option, - #[serde(default)] - #[serde(deserialize_with = "maybe_workspace_vec_string")] exclude: Option>>, - #[serde(default)] - #[serde(deserialize_with = "maybe_workspace_vec_string")] include: Option>>, publish: Option>, workspace: Option, @@ -1144,11 +1101,7 @@ pub struct TomlProject { homepage: Option>, documentation: Option>, readme: Option>, - #[serde(default)] - #[serde(deserialize_with = "maybe_workspace_vec_string")] keywords: Option>>, - #[serde(default)] - #[serde(deserialize_with = "maybe_workspace_vec_string")] categories: Option>>, license: Option>, license_file: Option>, diff --git a/tests/testsuite/metadata.rs b/tests/testsuite/metadata.rs index 1d01127d9..922544a6e 100644 --- a/tests/testsuite/metadata.rs +++ b/tests/testsuite/metadata.rs @@ -1725,7 +1725,7 @@ fn cargo_metadata_with_invalid_authors_field() { r#"[ERROR] failed to parse manifest at `[..]` Caused by: - invalid type: string "", expected vector of strings for key `package.authors`"#, + invalid type: string "", expected a sequence for key `package.authors`"#, ) .run(); }