From f4ce0798ad57cab696665a857fd6f3c3d20f954f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 29 Oct 2025 12:38:06 +0000 Subject: [PATCH 1/2] fix(deps): update rust crate toml to 0.9 --- Cargo.lock | 2 +- crates/metadata/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ad0997e78..52bf8bfe3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2037,7 +2037,7 @@ version = "0.1.0" dependencies = [ "serde", "thiserror 2.0.17", - "toml 0.8.23", + "toml 0.9.8", ] [[package]] diff --git a/crates/metadata/Cargo.toml b/crates/metadata/Cargo.toml index dc8afdc8d..f5942d426 100644 --- a/crates/metadata/Cargo.toml +++ b/crates/metadata/Cargo.toml @@ -14,5 +14,5 @@ path = "lib.rs" [dependencies] serde = { version = "1.0", features = ["derive"] } -toml = "0.8" +toml = "0.9" thiserror = "2" From 1e5c8977940bd6865cf02a3b3a921fcef98bdd96 Mon Sep 17 00:00:00 2001 From: Denis Cornehl Date: Thu, 30 Oct 2025 08:37:49 +0100 Subject: [PATCH 2/2] apply fixes after breaking toml lib changes --- crates/metadata/lib.rs | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/crates/metadata/lib.rs b/crates/metadata/lib.rs index 90f0e2fb9..32e0525a5 100644 --- a/crates/metadata/lib.rs +++ b/crates/metadata/lib.rs @@ -325,10 +325,10 @@ impl std::str::FromStr for Metadata { fn from_str(manifest: &str) -> Result { use toml::value::Table; - let manifest = match manifest.parse::()? { - Value::Table(t) => Some(t), - _ => None, - }; + // the `Cargo.toml` is a full document, and: + // > A TOML document is represented with the Table type which maps + // > String to the Value enum. + let manifest = manifest.parse::()?; fn table<'a>(manifest: &'a Table, table_name: &str) -> Option<&'a Table> { match manifest.get(table_name) { @@ -337,17 +337,14 @@ impl std::str::FromStr for Metadata { } } - let plain_table = manifest - .as_ref() - .and_then(|t| table(t, "package")) - .and_then(|t| table(t, "metadata")) + let package_metadata = table(&manifest, "package").and_then(|t| table(t, "metadata")); + + let plain_table = package_metadata .and_then(|t| table(t, "docs")) .and_then(|t| table(t, "rs")); - let quoted_table = manifest - .as_ref() - .and_then(|t| table(t, "package")) - .and_then(|t| table(t, "metadata")) - .and_then(|t| table(t, "docs.rs")); + + let quoted_table = package_metadata.and_then(|t| table(t, "docs.rs")); + let mut metadata = if let Some(table) = plain_table { Value::Table(table.clone()).try_into()? } else if let Some(table) = quoted_table { @@ -356,9 +353,7 @@ impl std::str::FromStr for Metadata { Metadata::default() }; - let proc_macro = manifest - .as_ref() - .and_then(|t| table(t, "lib")) + let proc_macro = table(&manifest, "lib") .and_then(|table| table.get("proc-macro").or_else(|| table.get("proc_macro"))) .and_then(|val| val.as_bool()); if let Some(proc_macro) = proc_macro {