From 418640391865154c7c23df623bb53f466548d639 Mon Sep 17 00:00:00 2001 From: Jake Shadle Date: Wed, 1 Apr 2026 10:48:08 +0200 Subject: [PATCH 1/6] Update test case --- tests/feature-bug-2/Cargo.lock | 594 ++++++++++++++- tests/feature-bug-2/Cargo.toml | 7 + .../features__duplicate_versions.snap | 719 +++++++++++++++--- 3 files changed, 1193 insertions(+), 127 deletions(-) diff --git a/tests/feature-bug-2/Cargo.lock b/tests/feature-bug-2/Cargo.lock index ff0c5de..d76e34c 100644 --- a/tests/feature-bug-2/Cargo.lock +++ b/tests/feature-bug-2/Cargo.lock @@ -1,6 +1,47 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "arraydeque" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "bitflags" @@ -8,13 +49,110 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +dependencies = [ + "serde_core", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "config" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68578f196d2a33ff61b27fae256c3164f65e36382648e30666dde05b8cc9dfdf" +dependencies = [ + "async-trait", + "convert_case", + "json5", + "nom", + "pathdiff", + "ron", + "rust-ini 0.20.0", + "serde", + "serde_json", + "toml", + "yaml-rust2", +] + +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom", + "once_cell", + "tiny-keccak", +] + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + [[package]] name = "defmt" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a99dd22262668b887121d4672af5a64b238f026099f1a2a1b322066c9ecfe9e0" dependencies = [ - "bitflags", + "bitflags 1.3.2", "defmt-macros", ] @@ -40,6 +178,25 @@ dependencies = [ "thiserror", ] +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dlv-list" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" +dependencies = [ + "const-random", +] + [[package]] name = "embedded-hal" version = "0.2.7" @@ -59,15 +216,130 @@ dependencies = [ "defmt", ] +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + [[package]] name = "feature-bug-2" version = "0.1.0" dependencies = [ + "config", "defmt", "embedded-hal 0.2.7", "embedded-hal 1.0.0", + "rust-ini 0.19.0", + "rust-ini 0.21.3", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "libc", + "wasi", ] +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "hashlink" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" +dependencies = [ + "hashbrown 0.14.5", +] + +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "json5" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" +dependencies = [ + "pest", + "pest_derive", + "serde", +] + +[[package]] +name = "libc" +version = "0.2.183" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "nb" version = "0.1.3" @@ -83,6 +355,91 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d" +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "ordered-multimap" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ed8acf08e98e744e5384c8bc63ceb0364e68a6854187221c18df61c4797690e" +dependencies = [ + "dlv-list", + "hashbrown 0.13.2", +] + +[[package]] +name = "ordered-multimap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79" +dependencies = [ + "dlv-list", + "hashbrown 0.14.5", +] + +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + +[[package]] +name = "pest" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +dependencies = [ + "memchr", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "pest_meta" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +dependencies = [ + "pest", + "sha2", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -125,6 +482,113 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "ron" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" +dependencies = [ + "base64", + "bitflags 2.11.0", + "serde", + "serde_derive", +] + +[[package]] +name = "rust-ini" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e2a3bcec1f113553ef1c88aae6c020a369d03d55b58de9869a0908930385091" +dependencies = [ + "cfg-if", + "ordered-multimap 0.6.0", + "unicase", +] + +[[package]] +name = "rust-ini" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e0698206bcb8882bf2a9ecb4c1e7785db57ff052297085a6efd4fe42302068a" +dependencies = [ + "cfg-if", + "ordered-multimap 0.7.3", +] + +[[package]] +name = "rust-ini" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "796e8d2b6696392a43bea58116b667fb4c29727dc5abd27d6acf338bb4f688c7" +dependencies = [ + "cfg-if", + "ordered-multimap 0.7.3", + "unicase", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "syn" version = "1.0.109" @@ -166,12 +630,86 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + [[package]] name = "unicode-ident" version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +[[package]] +name = "unicode-segmentation" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" + [[package]] name = "version_check" version = "0.9.5" @@ -183,3 +721,55 @@ name = "void" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + +[[package]] +name = "yaml-rust2" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8902160c4e6f2fb145dbe9d6760a75e3c9522d8bf796ed7047c85919ac7115f8" +dependencies = [ + "arraydeque", + "encoding_rs", + "hashlink", +] + +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/tests/feature-bug-2/Cargo.toml b/tests/feature-bug-2/Cargo.toml index d772695..7c98b21 100644 --- a/tests/feature-bug-2/Cargo.toml +++ b/tests/feature-bug-2/Cargo.toml @@ -7,10 +7,17 @@ edition = "2021" defmt = { version = "0.3.8", optional = true } embedded-hal-02 = { version = "0.2.7", features = ["unproven"], package = "embedded-hal" } embedded-hal = "1.0.0" +config = "=0.14.1" +inii = { package = "rust-ini", version = "=0.21.3" } +rust-ini = "=0.19.0" [features] default = [] defmt = [ "dep:defmt", "embedded-hal/defmt-03", +] +unicase = [ + "rust-ini/unicase", + "inii/case-insensitive", ] \ No newline at end of file diff --git a/tests/snapshots/features__duplicate_versions.snap b/tests/snapshots/features__duplicate_versions.snap index e37cce0..f7a3990 100644 --- a/tests/snapshots/features__duplicate_versions.snap +++ b/tests/snapshots/features__duplicate_versions.snap @@ -1,131 +1,600 @@ --- source: tests/features.rs expression: dotgraph -snapshot_kind: text --- digraph { - 0 [ label = "crate bitflags 1.3.2" ] - 1 [ label = "crate defmt 0.3.8" ] - 2 [ label = "crate defmt-macros 0.3.9" ] - 3 [ label = "crate defmt-parser 0.3.4" ] - 4 [ label = "crate embedded-hal 0.2.7" ] - 5 [ label = "crate embedded-hal 1.0.0" ] - 6 [ label = "crate feature-bug-2 0.1.0 path+file:///krates/tests/feature-bug-2" ] - 7 [ label = "crate nb 0.1.3" ] - 8 [ label = "crate nb 1.1.0" ] - 9 [ label = "crate proc-macro-error 1.0.4" ] - 10 [ label = "crate proc-macro-error-attr 1.0.4" ] - 11 [ label = "crate proc-macro2 1.0.89" ] - 12 [ label = "crate quote 1.0.37" ] - 13 [ label = "crate syn 1.0.109" ] - 14 [ label = "crate syn 2.0.87" ] - 15 [ label = "crate thiserror 1.0.69" ] - 16 [ label = "crate thiserror-impl 1.0.69" ] - 17 [ label = "crate unicode-ident 1.0.13" ] - 18 [ label = "crate version_check 0.9.5" ] - 19 [ label = "crate void 1.0.2" ] - 20 [ label = "feature default" ] - 21 [ label = "feature unstable" ] - 22 [ label = "feature default" ] - 23 [ label = "feature default" ] - 24 [ label = "feature default" ] - 25 [ label = "feature full" ] - 26 [ label = "feature extra-traits" ] - 27 [ label = "feature default" ] - 28 [ label = "feature unstable" ] - 29 [ label = "feature unproven" ] - 30 [ label = "feature defmt-03" ] - 31 [ label = "feature proc-macro" ] - 32 [ label = "feature proc-macro" ] - 33 [ label = "feature defmt-03" ] - 34 [ label = "feature defmt" ] - 35 [ label = "feature defmt-03" ] - 36 [ label = "feature default" ] - 37 [ label = "feature syn-error" ] - 38 [ label = "feature syn" ] - 39 [ label = "feature proc-macro" ] - 40 [ label = "feature printing" ] - 41 [ label = "feature parsing" ] - 42 [ label = "feature derive" ] - 43 [ label = "feature clone-impls" ] - 1 -> 20 [ label = "" ] - 1 -> 2 [ label = "" ] - 2 -> 21 [ label = "" ] - 2 -> 22 [ label = "" ] - 2 -> 23 [ label = "" ] - 2 -> 24 [ label = "" ] - 2 -> 25 [ label = "" ] - 2 -> 26 [ label = "" ] - 2 -> 27 [ label = "" ] - 3 -> 15 [ label = "" ] - 4 -> 7 [ label = "" ] - 4 -> 28 [ label = "" ] - 4 -> 19 [ label = "" ] - 5 -> 1 [ label = "" ] - 6 -> 1 [ label = "" ] - 6 -> 29 [ label = "" ] - 6 -> 5 [ label = "" ] - 6 -> 30 [ label = "" ] - 7 -> 8 [ label = "" ] - 9 -> 10 [ label = "" ] - 9 -> 23 [ label = "" ] - 9 -> 24 [ label = "" ] - 9 -> 13 [ label = "" ] - 9 -> 18 [ label = "(build)" ] - 10 -> 23 [ label = "" ] - 10 -> 24 [ label = "" ] - 10 -> 18 [ label = "(build)" ] - 11 -> 17 [ label = "" ] - 12 -> 11 [ label = "" ] - 12 -> 31 [ label = "" ] - 13 -> 11 [ label = "" ] - 13 -> 17 [ label = "" ] - 14 -> 11 [ label = "" ] - 14 -> 31 [ label = "" ] - 14 -> 12 [ label = "" ] - 14 -> 32 [ label = "" ] - 14 -> 17 [ label = "" ] - 15 -> 16 [ label = "" ] - 16 -> 23 [ label = "" ] - 16 -> 24 [ label = "" ] - 16 -> 27 [ label = "" ] - 20 -> 0 [ label = "" ] - 21 -> 3 [ label = "" ] - 29 -> 4 [ label = "" ] - 29 -> 28 [ label = "" ] - 30 -> 5 [ label = "" ] - 30 -> 33 [ label = "" ] - 34 -> 6 [ label = "" ] - 34 -> 1 [ label = "" ] - 34 -> 35 [ label = "" ] - 36 -> 6 [ label = "" ] - 28 -> 7 [ label = "" ] - 37 -> 9 [ label = "" ] - 37 -> 38 [ label = "" ] - 38 -> 9 [ label = "" ] - 38 -> 13 [ label = "" ] - 22 -> 9 [ label = "" ] - 22 -> 37 [ label = "" ] - 31 -> 11 [ label = "" ] - 23 -> 11 [ label = "" ] - 23 -> 31 [ label = "" ] - 32 -> 12 [ label = "" ] - 32 -> 31 [ label = "" ] - 24 -> 12 [ label = "" ] - 24 -> 32 [ label = "" ] - 39 -> 14 [ label = "" ] - 39 -> 31 [ label = "" ] - 40 -> 14 [ label = "" ] - 40 -> 12 [ label = "" ] - 41 -> 14 [ label = "" ] - 25 -> 14 [ label = "" ] - 26 -> 14 [ label = "" ] - 42 -> 14 [ label = "" ] - 27 -> 14 [ label = "" ] - 27 -> 42 [ label = "" ] - 27 -> 41 [ label = "" ] - 27 -> 40 [ label = "" ] - 27 -> 43 [ label = "" ] - 27 -> 39 [ label = "" ] - 43 -> 14 [ label = "" ] + 0 [ label = "crate ahash 0.8.12" ] + 1 [ label = "crate allocator-api2 0.2.21" ] + 2 [ label = "crate arraydeque 0.5.1" ] + 3 [ label = "crate async-trait 0.1.89" ] + 4 [ label = "crate base64 0.21.7" ] + 5 [ label = "crate bitflags 1.3.2" ] + 6 [ label = "crate bitflags 2.11.0" ] + 7 [ label = "crate block-buffer 0.10.4" ] + 8 [ label = "crate cfg-if 1.0.4" ] + 9 [ label = "crate config 0.14.1" ] + 10 [ label = "crate const-random 0.1.18" ] + 11 [ label = "crate const-random-macro 0.1.16" ] + 12 [ label = "crate convert_case 0.6.0" ] + 13 [ label = "crate cpufeatures 0.2.17" ] + 14 [ label = "crate crunchy 0.2.4" ] + 15 [ label = "crate crypto-common 0.1.7" ] + 16 [ label = "crate defmt 0.3.8" ] + 17 [ label = "crate defmt-macros 0.3.9" ] + 18 [ label = "crate defmt-parser 0.3.4" ] + 19 [ label = "crate digest 0.10.7" ] + 20 [ label = "crate dlv-list 0.5.2" ] + 21 [ label = "crate embedded-hal 0.2.7" ] + 22 [ label = "crate embedded-hal 1.0.0" ] + 23 [ label = "crate encoding_rs 0.8.35" ] + 24 [ label = "crate equivalent 1.0.2" ] + 25 [ label = "crate feature-bug-2 0.1.0 path+file:///krates/tests/feature-bug-2" ] + 26 [ label = "crate generic-array 0.14.7" ] + 27 [ label = "crate getrandom 0.2.17" ] + 28 [ label = "crate hashbrown 0.13.2" ] + 29 [ label = "crate hashbrown 0.14.5" ] + 30 [ label = "crate hashbrown 0.16.1" ] + 31 [ label = "crate hashlink 0.8.4" ] + 32 [ label = "crate indexmap 2.13.0" ] + 33 [ label = "crate itoa 1.0.18" ] + 34 [ label = "crate json5 0.4.1" ] + 35 [ label = "crate libc 0.2.183" ] + 36 [ label = "crate memchr 2.8.0" ] + 37 [ label = "crate minimal-lexical 0.2.1" ] + 38 [ label = "crate nb 0.1.3" ] + 39 [ label = "crate nb 1.1.0" ] + 40 [ label = "crate nom 7.1.3" ] + 41 [ label = "crate once_cell 1.21.4" ] + 42 [ label = "crate ordered-multimap 0.6.0" ] + 43 [ label = "crate ordered-multimap 0.7.3" ] + 44 [ label = "crate pathdiff 0.2.3" ] + 45 [ label = "crate pest 2.8.6" ] + 46 [ label = "crate pest_derive 2.8.6" ] + 47 [ label = "crate pest_generator 2.8.6" ] + 48 [ label = "crate pest_meta 2.8.6" ] + 49 [ label = "crate proc-macro-error 1.0.4" ] + 50 [ label = "crate proc-macro-error-attr 1.0.4" ] + 51 [ label = "crate proc-macro2 1.0.89" ] + 52 [ label = "crate quote 1.0.37" ] + 53 [ label = "crate ron 0.8.1" ] + 54 [ label = "crate rust-ini 0.19.0" ] + 55 [ label = "crate rust-ini 0.21.3" ] + 56 [ label = "crate serde 1.0.228" ] + 57 [ label = "crate serde_core 1.0.228" ] + 58 [ label = "crate serde_derive 1.0.228" ] + 59 [ label = "crate serde_json 1.0.149" ] + 60 [ label = "crate serde_spanned 0.6.9" ] + 61 [ label = "crate sha2 0.10.9" ] + 62 [ label = "crate syn 1.0.109" ] + 63 [ label = "crate syn 2.0.87" ] + 64 [ label = "crate thiserror 1.0.69" ] + 65 [ label = "crate thiserror-impl 1.0.69" ] + 66 [ label = "crate tiny-keccak 2.0.2" ] + 67 [ label = "crate toml 0.8.23" ] + 68 [ label = "crate toml_datetime 0.6.11" ] + 69 [ label = "crate toml_edit 0.22.27" ] + 70 [ label = "crate toml_write 0.1.2" ] + 71 [ label = "crate typenum 1.19.0" ] + 72 [ label = "crate ucd-trie 0.1.7" ] + 73 [ label = "crate unicase 2.9.0" ] + 74 [ label = "crate unicode-ident 1.0.13" ] + 75 [ label = "crate unicode-segmentation 1.13.2" ] + 76 [ label = "crate version_check 0.9.5" ] + 77 [ label = "crate void 1.0.2" ] + 78 [ label = "crate wasi 0.11.1+wasi-snapshot-preview1" ] + 79 [ label = "crate winnow 0.7.15" ] + 80 [ label = "crate yaml-rust2 0.8.1" ] + 81 [ label = "crate zerocopy 0.8.27" ] + 82 [ label = "crate zmij 1.0.21" ] + 83 [ label = "feature alloc" ] + 84 [ label = "feature simd" ] + 85 [ label = "feature default" ] + 86 [ label = "feature default" ] + 87 [ label = "feature clone-impls" ] + 88 [ label = "feature full" ] + 89 [ label = "feature parsing" ] + 90 [ label = "feature printing" ] + 91 [ label = "feature proc-macro" ] + 92 [ label = "feature visit-mut" ] + 93 [ label = "feature default" ] + 94 [ label = "feature default" ] + 95 [ label = "feature default" ] + 96 [ label = "feature derive" ] + 97 [ label = "feature default" ] + 98 [ label = "feature default" ] + 99 [ label = "feature default" ] + 100 [ label = "feature race" ] + 101 [ label = "feature shake" ] + 102 [ label = "feature default" ] + 103 [ label = "feature more_lengths" ] + 104 [ label = "feature default" ] + 105 [ label = "feature unstable" ] + 106 [ label = "feature default" ] + 107 [ label = "feature extra-traits" ] + 108 [ label = "feature default" ] + 109 [ label = "feature unstable" ] + 110 [ label = "feature default" ] + 111 [ label = "feature unproven" ] + 112 [ label = "feature defmt-03" ] + 113 [ label = "feature default" ] + 114 [ label = "feature default" ] + 115 [ label = "feature case-insensitive" ] + 116 [ label = "feature alloc" ] + 117 [ label = "feature default" ] + 118 [ label = "feature default" ] + 119 [ label = "feature default" ] + 120 [ label = "feature std" ] + 121 [ label = "feature std" ] + 122 [ label = "feature std" ] + 123 [ label = "feature default" ] + 124 [ label = "feature std" ] + 125 [ label = "feature std" ] + 126 [ label = "feature std" ] + 127 [ label = "feature default" ] + 128 [ label = "feature proc-macro" ] + 129 [ label = "feature default" ] + 130 [ label = "feature serde" ] + 131 [ label = "feature default" ] + 132 [ label = "feature default" ] + 133 [ label = "feature default" ] + 134 [ label = "feature result" ] + 135 [ label = "feature std" ] + 136 [ label = "feature proc-macro" ] + 137 [ label = "feature derive" ] + 138 [ label = "feature default" ] + 139 [ label = "feature default" ] + 140 [ label = "feature serde" ] + 141 [ label = "feature serde" ] + 142 [ label = "feature serde" ] + 143 [ label = "feature display" ] + 144 [ label = "feature parse" ] + 145 [ label = "feature std" ] + 146 [ label = "feature default" ] + 147 [ label = "feature default" ] + 148 [ label = "feature default" ] + 149 [ label = "feature default" ] + 150 [ label = "feature default" ] + 151 [ label = "feature std" ] + 152 [ label = "feature std" ] + 153 [ label = "feature alloc" ] + 154 [ label = "feature serde_core" ] + 155 [ label = "feature yaml-rust2" ] + 156 [ label = "feature yaml" ] + 157 [ label = "feature toml" ] + 158 [ label = "feature serde_json" ] + 159 [ label = "feature rust-ini" ] + 160 [ label = "feature ron" ] + 161 [ label = "feature json5_rs" ] + 162 [ label = "feature json5_rs" ] + 163 [ label = "feature json5" ] + 164 [ label = "feature json" ] + 165 [ label = "feature ini" ] + 166 [ label = "feature convert-case" ] + 167 [ label = "feature async" ] + 168 [ label = "feature convert_case" ] + 169 [ label = "feature async-trait" ] + 170 [ label = "feature limit_128" ] + 171 [ label = "feature core-api" ] + 172 [ label = "feature block-buffer" ] + 173 [ label = "feature defmt-03" ] + 174 [ label = "feature alloc" ] + 175 [ label = "feature unicase" ] + 176 [ label = "feature unicase" ] + 177 [ label = "feature defmt" ] + 178 [ label = "feature defmt-03" ] + 179 [ label = "feature default" ] + 180 [ label = "feature inline-more" ] + 181 [ label = "feature ahash" ] + 182 [ label = "feature allocator-api2" ] + 183 [ label = "feature alloc" ] + 184 [ label = "feature std" ] + 185 [ label = "feature alloc" ] + 186 [ label = "feature std" ] + 187 [ label = "feature std" ] + 188 [ label = "feature memchr" ] + 189 [ label = "feature std" ] + 190 [ label = "feature syn-error" ] + 191 [ label = "feature syn" ] + 192 [ label = "feature unicase" ] + 193 [ label = "feature std" ] + 194 [ label = "feature serde_derive" ] + 195 [ label = "feature std" ] + 196 [ label = "feature parse" ] + 197 [ label = "feature display" ] + 198 [ label = "feature std" ] + 199 [ label = "feature alloc" ] + 200 [ label = "feature std" ] + 201 [ label = "feature alloc" ] + 202 [ label = "feature encoding" ] + 0 -> 8 [ label = "" ] + 0 -> 83 [ label = " 'cfg(not(all(target_arch = \"arm\", target_os = \"none\")))'" ] + 0 -> 76 [ label = "(build)" ] + 0 -> 84 [ label = "" ] + 3 -> 85 [ label = "" ] + 3 -> 86 [ label = "" ] + 3 -> 87 [ label = "" ] + 3 -> 88 [ label = "" ] + 3 -> 89 [ label = "" ] + 3 -> 90 [ label = "" ] + 3 -> 91 [ label = "" ] + 3 -> 92 [ label = "" ] + 6 -> 57 [ label = "" ] + 7 -> 26 [ label = "" ] + 9 -> 3 [ label = "" ] + 9 -> 12 [ label = "" ] + 9 -> 34 [ label = "" ] + 9 -> 93 [ label = "" ] + 9 -> 44 [ label = "" ] + 9 -> 94 [ label = "" ] + 9 -> 95 [ label = "" ] + 9 -> 96 [ label = "" ] + 9 -> 97 [ label = "" ] + 9 -> 98 [ label = "" ] + 9 -> 99 [ label = "" ] + 10 -> 11 [ label = "" ] + 11 -> 27 [ label = "" ] + 11 -> 100 [ label = "" ] + 11 -> 83 [ label = "" ] + 11 -> 101 [ label = "" ] + 11 -> 102 [ label = "" ] + 12 -> 75 [ label = "" ] + 13 -> 35 [ label = " 'aarch64-linux-android'" ] + 13 -> 35 [ label = " 'cfg(all(target_arch = \"aarch64\", target_os = \"linux\"))'" ] + 13 -> 35 [ label = " 'cfg(all(target_arch = \"aarch64\", target_vendor = \"apple\"))'" ] + 13 -> 35 [ label = " 'cfg(all(target_arch = \"loongarch64\", target_os = \"linux\"))'" ] + 15 -> 103 [ label = "" ] + 15 -> 71 [ label = "" ] + 16 -> 104 [ label = "" ] + 16 -> 17 [ label = "" ] + 17 -> 105 [ label = "" ] + 17 -> 106 [ label = "" ] + 17 -> 85 [ label = "" ] + 17 -> 86 [ label = "" ] + 17 -> 88 [ label = "" ] + 17 -> 107 [ label = "" ] + 17 -> 108 [ label = "" ] + 18 -> 64 [ label = "" ] + 19 -> 7 [ label = "" ] + 19 -> 15 [ label = "" ] + 20 -> 10 [ label = "" ] + 21 -> 38 [ label = "" ] + 21 -> 109 [ label = "" ] + 21 -> 77 [ label = "" ] + 22 -> 16 [ label = "" ] + 23 -> 8 [ label = "" ] + 25 -> 110 [ label = "" ] + 25 -> 16 [ label = "" ] + 25 -> 111 [ label = "" ] + 25 -> 22 [ label = "" ] + 25 -> 112 [ label = "" ] + 25 -> 113 [ label = "" ] + 25 -> 114 [ label = "" ] + 25 -> 115 [ label = "" ] + 26 -> 71 [ label = "" ] + 26 -> 76 [ label = "(build)" ] + 27 -> 8 [ label = "" ] + 27 -> 35 [ label = " 'cfg(unix)'" ] + 27 -> 78 [ label = " 'cfg(target_os = \"wasi\")'" ] + 29 -> 0 [ label = "" ] + 29 -> 116 [ label = "" ] + 31 -> 117 [ label = "" ] + 32 -> 24 [ label = "" ] + 32 -> 30 [ label = "" ] + 34 -> 118 [ label = "" ] + 34 -> 119 [ label = "" ] + 34 -> 95 [ label = "" ] + 38 -> 39 [ label = "" ] + 40 -> 36 [ label = "" ] + 40 -> 120 [ label = "" ] + 40 -> 37 [ label = "" ] + 40 -> 121 [ label = "" ] + 42 -> 20 [ label = "" ] + 42 -> 122 [ label = "" ] + 42 -> 28 [ label = "" ] + 43 -> 20 [ label = "" ] + 43 -> 122 [ label = "" ] + 43 -> 29 [ label = "" ] + 45 -> 123 [ label = "" ] + 45 -> 72 [ label = "" ] + 45 -> 124 [ label = "" ] + 46 -> 45 [ label = "" ] + 46 -> 125 [ label = "" ] + 46 -> 47 [ label = "" ] + 46 -> 126 [ label = "" ] + 47 -> 45 [ label = "" ] + 47 -> 125 [ label = "" ] + 47 -> 127 [ label = "" ] + 47 -> 85 [ label = "" ] + 47 -> 86 [ label = "" ] + 47 -> 108 [ label = "" ] + 48 -> 118 [ label = "" ] + 48 -> 61 [ label = "(build)" ] + 49 -> 50 [ label = "" ] + 49 -> 85 [ label = "" ] + 49 -> 86 [ label = "" ] + 49 -> 62 [ label = "" ] + 49 -> 76 [ label = "(build)" ] + 50 -> 85 [ label = "" ] + 50 -> 86 [ label = "" ] + 50 -> 76 [ label = "(build)" ] + 51 -> 74 [ label = "" ] + 52 -> 51 [ label = "" ] + 52 -> 128 [ label = "" ] + 53 -> 129 [ label = "" ] + 53 -> 130 [ label = "" ] + 53 -> 95 [ label = "" ] + 53 -> 131 [ label = "" ] + 54 -> 8 [ label = "" ] + 54 -> 132 [ label = "" ] + 55 -> 8 [ label = "" ] + 55 -> 133 [ label = "" ] + 55 -> 73 [ label = "" ] + 56 -> 134 [ label = "" ] + 56 -> 135 [ label = "" ] + 56 -> 131 [ label = "" ] + 58 -> 128 [ label = "" ] + 58 -> 136 [ label = "" ] + 58 -> 87 [ label = "" ] + 58 -> 137 [ label = "" ] + 58 -> 89 [ label = "" ] + 58 -> 90 [ label = "" ] + 58 -> 91 [ label = "" ] + 59 -> 33 [ label = "" ] + 59 -> 36 [ label = "" ] + 59 -> 120 [ label = "" ] + 59 -> 57 [ label = "" ] + 59 -> 135 [ label = "" ] + 59 -> 82 [ label = "" ] + 60 -> 95 [ label = "" ] + 61 -> 8 [ label = "" ] + 61 -> 13 [ label = " 'cfg(any(target_arch = \"aarch64\", target_arch = \"x86_64\", target_arch = \"x86\"))'" ] + 61 -> 138 [ label = "" ] + 62 -> 51 [ label = "" ] + 62 -> 74 [ label = "" ] + 63 -> 51 [ label = "" ] + 63 -> 128 [ label = "" ] + 63 -> 52 [ label = "" ] + 63 -> 136 [ label = "" ] + 63 -> 74 [ label = "" ] + 64 -> 65 [ label = "" ] + 65 -> 85 [ label = "" ] + 65 -> 86 [ label = "" ] + 65 -> 108 [ label = "" ] + 66 -> 139 [ label = "" ] + 67 -> 95 [ label = "" ] + 67 -> 140 [ label = "" ] + 67 -> 141 [ label = "" ] + 67 -> 142 [ label = "" ] + 67 -> 143 [ label = "" ] + 67 -> 144 [ label = "" ] + 68 -> 95 [ label = "" ] + 69 -> 145 [ label = "" ] + 69 -> 146 [ label = "" ] + 69 -> 95 [ label = "" ] + 69 -> 140 [ label = "" ] + 69 -> 68 [ label = "" ] + 69 -> 141 [ label = "" ] + 69 -> 147 [ label = "" ] + 69 -> 148 [ label = "" ] + 80 -> 149 [ label = "" ] + 80 -> 150 [ label = "" ] + 80 -> 31 [ label = "" ] + 116 -> 1 [ label = "" ] + 151 -> 2 [ label = "" ] + 149 -> 2 [ label = "" ] + 149 -> 151 [ label = "" ] + 152 -> 4 [ label = "" ] + 152 -> 153 [ label = "" ] + 129 -> 4 [ label = "" ] + 129 -> 152 [ label = "" ] + 153 -> 4 [ label = "" ] + 104 -> 5 [ label = "" ] + 154 -> 6 [ label = "" ] + 154 -> 57 [ label = "" ] + 130 -> 6 [ label = "" ] + 130 -> 154 [ label = "" ] + 155 -> 9 [ label = "" ] + 155 -> 80 [ label = "" ] + 156 -> 9 [ label = "" ] + 156 -> 155 [ label = "" ] + 157 -> 9 [ label = "" ] + 157 -> 67 [ label = "" ] + 158 -> 9 [ label = "" ] + 158 -> 59 [ label = "" ] + 159 -> 9 [ label = "" ] + 160 -> 9 [ label = "" ] + 160 -> 53 [ label = "" ] + 161 -> 9 [ label = "" ] + 161 -> 162 [ label = "" ] + 163 -> 9 [ label = "" ] + 163 -> 161 [ label = "" ] + 163 -> 96 [ label = "" ] + 164 -> 9 [ label = "" ] + 164 -> 158 [ label = "" ] + 165 -> 9 [ label = "" ] + 165 -> 159 [ label = "" ] + 110 -> 9 [ label = "" ] + 110 -> 157 [ label = "" ] + 110 -> 164 [ label = "" ] + 110 -> 156 [ label = "" ] + 110 -> 165 [ label = "" ] + 110 -> 160 [ label = "" ] + 110 -> 163 [ label = "" ] + 110 -> 166 [ label = "" ] + 110 -> 167 [ label = "" ] + 168 -> 9 [ label = "" ] + 168 -> 12 [ label = "" ] + 166 -> 9 [ label = "" ] + 166 -> 168 [ label = "" ] + 169 -> 9 [ label = "" ] + 169 -> 3 [ label = "" ] + 167 -> 9 [ label = "" ] + 167 -> 169 [ label = "" ] + 170 -> 14 [ label = "" ] + 139 -> 14 [ label = "" ] + 139 -> 170 [ label = "" ] + 105 -> 18 [ label = "" ] + 138 -> 19 [ label = "" ] + 138 -> 171 [ label = "" ] + 171 -> 19 [ label = "" ] + 171 -> 172 [ label = "" ] + 172 -> 19 [ label = "" ] + 172 -> 7 [ label = "" ] + 122 -> 20 [ label = "" ] + 111 -> 21 [ label = "" ] + 111 -> 109 [ label = "" ] + 112 -> 22 [ label = "" ] + 112 -> 173 [ label = "" ] + 150 -> 23 [ label = "" ] + 150 -> 174 [ label = "" ] + 174 -> 23 [ label = "" ] + 175 -> 25 [ label = "" ] + 175 -> 176 [ label = "" ] + 175 -> 115 [ label = "" ] + 177 -> 25 [ label = "" ] + 177 -> 16 [ label = "" ] + 177 -> 178 [ label = "" ] + 179 -> 25 [ label = "" ] + 103 -> 26 [ label = "" ] + 180 -> 29 [ label = "" ] + 117 -> 29 [ label = "" ] + 117 -> 181 [ label = "" ] + 117 -> 180 [ label = "" ] + 117 -> 182 [ label = "" ] + 182 -> 29 [ label = "" ] + 182 -> 1 [ label = "" ] + 181 -> 29 [ label = "" ] + 181 -> 0 [ label = "" ] + 145 -> 32 [ label = "" ] + 146 -> 32 [ label = "" ] + 146 -> 145 [ label = "" ] + 120 -> 36 [ label = "" ] + 120 -> 183 [ label = "" ] + 123 -> 36 [ label = "" ] + 123 -> 120 [ label = "" ] + 183 -> 36 [ label = "" ] + 121 -> 37 [ label = "" ] + 109 -> 38 [ label = "" ] + 184 -> 40 [ label = "" ] + 184 -> 185 [ label = "" ] + 184 -> 120 [ label = "" ] + 184 -> 121 [ label = "" ] + 93 -> 40 [ label = "" ] + 93 -> 184 [ label = "" ] + 185 -> 40 [ label = "" ] + 100 -> 41 [ label = "" ] + 83 -> 41 [ label = "" ] + 83 -> 100 [ label = "" ] + 186 -> 42 [ label = "" ] + 186 -> 122 [ label = "" ] + 132 -> 42 [ label = "" ] + 132 -> 186 [ label = "" ] + 187 -> 43 [ label = "" ] + 187 -> 122 [ label = "" ] + 133 -> 43 [ label = "" ] + 133 -> 187 [ label = "" ] + 125 -> 45 [ label = "" ] + 125 -> 124 [ label = "" ] + 188 -> 45 [ label = "" ] + 188 -> 36 [ label = "" ] + 118 -> 45 [ label = "" ] + 118 -> 125 [ label = "" ] + 118 -> 188 [ label = "" ] + 189 -> 46 [ label = "" ] + 189 -> 125 [ label = "" ] + 189 -> 126 [ label = "" ] + 119 -> 46 [ label = "" ] + 119 -> 189 [ label = "" ] + 126 -> 47 [ label = "" ] + 126 -> 125 [ label = "" ] + 127 -> 48 [ label = "" ] + 190 -> 49 [ label = "" ] + 190 -> 191 [ label = "" ] + 191 -> 49 [ label = "" ] + 191 -> 62 [ label = "" ] + 106 -> 49 [ label = "" ] + 106 -> 190 [ label = "" ] + 128 -> 51 [ label = "" ] + 85 -> 51 [ label = "" ] + 85 -> 128 [ label = "" ] + 136 -> 52 [ label = "" ] + 136 -> 128 [ label = "" ] + 86 -> 52 [ label = "" ] + 86 -> 136 [ label = "" ] + 94 -> 53 [ label = "" ] + 113 -> 54 [ label = "" ] + 192 -> 55 [ label = "" ] + 192 -> 73 [ label = "" ] + 114 -> 55 [ label = "" ] + 115 -> 55 [ label = "" ] + 115 -> 192 [ label = "" ] + 193 -> 56 [ label = "" ] + 193 -> 135 [ label = "" ] + 194 -> 56 [ label = "" ] + 194 -> 58 [ label = "" ] + 96 -> 56 [ label = "" ] + 96 -> 194 [ label = "" ] + 95 -> 56 [ label = "" ] + 95 -> 193 [ label = "" ] + 135 -> 57 [ label = "" ] + 134 -> 57 [ label = "" ] + 131 -> 58 [ label = "" ] + 195 -> 59 [ label = "" ] + 195 -> 120 [ label = "" ] + 195 -> 135 [ label = "" ] + 97 -> 59 [ label = "" ] + 97 -> 195 [ label = "" ] + 140 -> 60 [ label = "" ] + 140 -> 56 [ label = "" ] + 92 -> 63 [ label = "" ] + 91 -> 63 [ label = "" ] + 91 -> 128 [ label = "" ] + 90 -> 63 [ label = "" ] + 90 -> 52 [ label = "" ] + 89 -> 63 [ label = "" ] + 88 -> 63 [ label = "" ] + 107 -> 63 [ label = "" ] + 137 -> 63 [ label = "" ] + 108 -> 63 [ label = "" ] + 108 -> 137 [ label = "" ] + 108 -> 89 [ label = "" ] + 108 -> 90 [ label = "" ] + 108 -> 87 [ label = "" ] + 108 -> 91 [ label = "" ] + 87 -> 63 [ label = "" ] + 101 -> 66 [ label = "" ] + 102 -> 66 [ label = "" ] + 196 -> 67 [ label = "" ] + 196 -> 69 [ label = "" ] + 197 -> 67 [ label = "" ] + 197 -> 69 [ label = "" ] + 98 -> 67 [ label = "" ] + 98 -> 196 [ label = "" ] + 98 -> 197 [ label = "" ] + 141 -> 68 [ label = "" ] + 141 -> 56 [ label = "" ] + 142 -> 69 [ label = "" ] + 142 -> 56 [ label = "" ] + 142 -> 141 [ label = "" ] + 142 -> 60 [ label = "" ] + 144 -> 69 [ label = "" ] + 144 -> 79 [ label = "" ] + 143 -> 69 [ label = "" ] + 143 -> 70 [ label = "" ] + 198 -> 70 [ label = "" ] + 198 -> 199 [ label = "" ] + 147 -> 70 [ label = "" ] + 147 -> 198 [ label = "" ] + 199 -> 70 [ label = "" ] + 124 -> 72 [ label = "" ] + 200 -> 79 [ label = "" ] + 200 -> 201 [ label = "" ] + 148 -> 79 [ label = "" ] + 148 -> 200 [ label = "" ] + 201 -> 79 [ label = "" ] + 202 -> 80 [ label = "" ] + 202 -> 23 [ label = "" ] + 99 -> 80 [ label = "" ] + 99 -> 202 [ label = "" ] + 84 -> 81 [ label = "" ] } From 8d9d6e838a9f0b1aa0c68aa9379dce29cfdd5bad Mon Sep 17 00:00:00 2001 From: Jake Shadle Date: Wed, 1 Apr 2026 11:30:08 +0200 Subject: [PATCH 2/6] Fix inadvertent pruning When adding crates to the visit stack based upon a dependent's enabled features, we were pruning crates due to a (IMO bug) oddity of cargo metadata, where the resolved nodes refer to the lib target name rather than the package name, unless the dependent renames it themselves. For 99.99% of crates this doesn't matter, but eg. rust-ini renames its lib target to 'ini' which would cause the entire rust-ini crate to be pruned if it was not renamed AND feature gated, eg. config -> ini -> rust-ini --- src/builder.rs | 467 +++-- .../features__duplicate_versions.snap | 885 +++++----- ...s__ignores_features_for_ignored_kinds.snap | 1546 +++++++++-------- 3 files changed, 1509 insertions(+), 1389 deletions(-) diff --git a/src/builder.rs b/src/builder.rs index c013c02..c27472b 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -609,6 +609,77 @@ impl Builder { { let mut resolved = md.resolve.ok_or(Error::NoResolveGraph)?; + // Crates can rename their lib target via + // [lib] + // name = "ihateyou" + // which will be the name that appears in the resolved node graph unless the dependent also renames it. This + // case is super rare, but we need to handle it to prevent crates being pruned from the graph due to not matching + // a /feature to the resolve node + struct Renames<'p> { + inner: BTreeMap<&'p str, Vec<(&'p semver::Version, &'p str)>>, + } + + #[inline] + fn pkg_name_equals(krate: &str, human: &str) -> bool { + krate.len() == human.len() + && krate + .chars() + .zip(human.chars()) + .all(|(a, b)| a == b || a == '_' && b == '-') + } + + impl<'p> Renames<'p> { + #[inline] + fn maybe_insert(&mut self, pkg: &'p crate::Package) { + let Some(targ) = pkg + .targets + .iter() + .find(|tar| tar.kind.contains(&cm::TargetKind::Lib)) + else { + return; + }; + + if pkg_name_equals(&targ.name, &pkg.name) { + return; + } + + let v = self.inner.entry(&pkg.name).or_default(); + + if let Err(i) = v.binary_search_by(|(vs, _n)| vs.cmp(&&pkg.version)) { + v.insert(i, (&pkg.version, &targ.name)); + } + } + + #[inline] + fn resolve_feature<'n>( + &self, + feature_krate_name: &str, + rnode: &'n Node, + ) -> Option<&'n NodeDep> { + rnode.deps.iter().find(|rdep| { + if pkg_name_equals(&rdep.name, feature_krate_name) { + return true; + } + + if feature_krate_name != rdep.pkg.name() { + return false; + } + + self.inner.get(rdep.pkg.name()).map_or(false, |renames| { + let Ok(i) = renames.binary_search_by(|(vs, _n)| vs.cmp(&&rdep.version)) + else { + return false; + }; + renames[i].1 == rdep.name + }) + }) + } + } + + let mut renames = Renames { + inner: Default::default(), + }; + let mut packages: Vec<_> = md .packages .into_iter() @@ -618,12 +689,20 @@ impl Builder { // Load all the cache entries from disk for all the possible _unique_ // crates in the graph so that we don't need to access disk again - let index = self.crates_io_index.map(|index| { + if let Some(index) = self.crates_io_index.map(|index| { index::CachingIndex::new( index, packages.iter().map(|(_id, pkg)| pkg.name.clone()).collect(), ) - }); + }) { + for (_, krate) in &mut packages { + index::fix_features(&index, krate); + } + } + + for (_, pkg) in &packages { + renames.maybe_insert(pkg); + } let mut workspace_members: Vec<_> = md.workspace_members.into_iter().map(Kid::from).collect(); @@ -643,10 +722,10 @@ impl Builder { // specified a particular crate in a workspace, so we'll only use // that single root for the entire graph rather than a root for each // workspace member crate - if !self.workspace { - if let Some(rkid) = &root { - roots.insert(rkid); - } + if !self.workspace + && let Some(rkid) = &root + { + roots.insert(rkid); } if roots.is_empty() { @@ -698,9 +777,29 @@ impl Builder { /// The name of the dependency, which could be a different name than the crate itself name: String, pkg: Kid, + version: semver::Version, dep_kinds: Vec, } + /// Determines if this dependency is the one named + /// + /// When renaming dependencies to something with a `-` in a Cargo.toml file, the actual resolved name in the metadata + /// will replace the `-` with a `_` so we need to take that into account when comparing the names as declared in the + /// crate metadata with the dependencies in the resolved graph + /// + /// But wait, it's worse! Packages can rename their library target and the resolved name will be that rename, but the name + /// used in the rest of the graph is the actual package name, so...sigh + #[inline] + fn dep_names_match(krate_dep_name: &str, dep: &NodeDep) -> bool { + for resolved_name in [&dep.name, dep.pkg.name()] { + if pkg_name_equals(resolved_name, krate_dep_name) { + return true; + } + } + + false + } + #[derive(Debug)] struct Node { id: Kid, @@ -759,9 +858,22 @@ impl Builder { }) .collect(); + let pkg = Kid::from(dn.pkg); + let version = match pkg.version().parse() { + Ok(v) => v, + Err(err) => { + panic!( + "failed to parse version '{}' from '{}': {err}", + pkg.version(), + pkg.repr + ); + } + }; + NodeDep { name: dn.name, - pkg: Kid::from(dn.pkg), + pkg, + version, dep_kinds, } }) @@ -795,15 +907,6 @@ impl Builder { nodes.sort_by(|a, b| a.id.cmp(&b.id)); - // #[inline] - // fn crate_name_from_pid(pid: &PackageId) -> &str { - // if let Some(name_end) = pid.repr.find(' ') { - // &pid.repr[..name_end] - // } else { - // DecomposedRepr::build(pid).name - // } - // } - let mut dep_edge_map = BTreeMap::new(); let mut feature_edge_map = BTreeMap::new(); @@ -897,7 +1000,7 @@ impl Builder { let krate_index = nodes.binary_search_by(|n| n.id.cmp(pid)).unwrap(); let rnode = &nodes[krate_index]; - let (_, krate) = &mut packages[krate_index]; + let (_, krate) = &packages[krate_index]; if exclude.iter().any(|exc| exc.matches(krate)) { continue; @@ -905,7 +1008,7 @@ impl Builder { let get_dep_id = |dep_name: &str| -> Option<&Kid> { rnode.deps.iter().find_map(|ndep| { - if dep_names_match(dep_name, &ndep.name) || dep_name == ndep.pkg.name() { + if dep_names_match(dep_name, ndep) { Some(&ndep.pkg) } else { None @@ -914,10 +1017,6 @@ impl Builder { }; let krate_features = feature_edge_map.entry(pid).or_insert_with(|| { - if let Some(index) = &index { - index::fix_features(index, krate); - } - // Cargo puts out a flat list of the enabled features, but we need // to use the declared features on the crate itself to figure out // the actual chain of features from one crate to another @@ -1058,9 +1157,8 @@ impl Builder { // index implementation is not provided, it's possible for the // resolved features to mention features that aren't in the // actual crate manifest - let fs = if let Some(fs) = krate.features.get(rnode.feature(feature)) { - fs - } else { + let feature_key = rnode.feature(feature); + let Some(fs) = krate.features.get(feature_key) else { // TODO: Show the user a warning, or just fail? continue; }; @@ -1079,17 +1177,15 @@ impl Builder { } }; - // Note that we don't care about the package name here, as cargo - // resolves feature by the manifest name for the package only, since - // it's possible to have multiple versions of the same crate that + // Note that we don't care about the package name here, as cargo resolves feature by the manifest + // name for the package only, since it's possible to have multiple versions of the same crate that // each need a unique name - let Some(ndep) = rnode - .deps - .iter() - .find(|rdep| dep_names_match(krate_name, &rdep.name)) - else { - // We can have a feature that points to a crate that isn't resolved by cargo due to it being - // a dev-only dependency + // + // ...except we do have to care! While the above is the **overwhelming** majority of cases, packages + // can also rename their `lib` target, which will mean that the resolved nodes use that name, + // unless they are _also_ renamed in the dependent, but the package name is used in the crate's + // dependencies. FUCK + let Some(ndep) = renames.resolve_feature(krate_name, rnode) else { continue; }; @@ -1165,8 +1261,7 @@ impl Builder { // mean there could be a situation where a single crate _could_ // be referenced with 0.0.x versions, but...I'll fix that if // someone reports an issue - let rdep_version: semver::Version = - rdep.pkg.version().parse().expect("failed to parse semver"); + let rdep_version = &rdep.version; let has_prelease = !rdep_version.pre.is_empty(); let edges = rdep.dep_kinds.iter().filter_map(|dk| { @@ -1188,8 +1283,8 @@ impl Builder { // Crates can rename the dependency package themselves let dname = dep.rename.as_deref().unwrap_or(&dep.name); - if !dep_names_match(dname, &rdep.name) && maybe_real_name != dname { - return false; + if maybe_real_name != dname && !dep_names_match(dname, &rdep) { + return false; } // Handle case where a dependency may not have a version requirement, which @@ -1203,7 +1298,7 @@ impl Builder { crate::targets_eq(&dk.cfg, &dep.target) }).count() > 1; - let (dep_index, dep) = krate + let Some((dep_index, dep)) = krate .dependencies .iter() .enumerate() @@ -1214,7 +1309,7 @@ impl Builder { // Crates can rename the dependency package themselves let dname = dep.rename.as_deref().unwrap_or(&dep.name); - if !dep_names_match(dname, &rdep.name) && maybe_real_name != dname { + if maybe_real_name != dname && !dep_names_match(dname, &rdep) { return false; } @@ -1243,22 +1338,23 @@ impl Builder { // then rustc can't compile `md5::compute` because there are two libs that satisfy that name) dep.source.as_deref().is_none_or(|dsrc| { let psrc = rdep.pkg.source(); - if let Some((dgit, pgit)) = dsrc.strip_prefix("git+").zip(psrc.strip_prefix("git+")) { - // The opaque git sources can have the full revision spec at the end, which is not part of - // source declaration - let dgit = if is_opaque { - dgit.rfind('#').map_or(dgit, |end| &dgit[..end]) - } else { - dgit - }; - - dgit == pgit + let Some((dgit, pgit)) = dsrc.strip_prefix("git+").zip(psrc.strip_prefix("git+")) else { + return dsrc == psrc; + }; + + // The opaque git sources can have the full revision spec at the end, which is not part of + // source declaration + let dgit = if is_opaque { + dgit.rfind('#').map_or(dgit, |end| &dgit[..end]) } else { - dsrc == psrc - } + dgit + }; + + dgit == pgit }) - }) - .unwrap_or_else(|| panic!("cargo metadata resolved a dependency for a dependency not specified by the crate: {rdep:?}")); + }) else { + unreachable!("cargo metadata resolved a dependency for a dependency not specified by the crate: {rdep:?}"); + }; if dep.optional && !strong { return None; @@ -1339,34 +1435,36 @@ impl Builder { } } - if !dep + if dep .edges .iter() .any(|d| d.kind == edge.kind && d.cfg.as_deref() == edge.cfg) { - visit_stack.extend(visit_dep.take()); - - let mut features = Vec::new(); - for feat in edge - .features - .iter() - .map(|f| f.as_str()) - .chain(edge.uses_default_features.then_some("default")) - { - let feat_index = rdep_node.feature_index(feat); - visit_stack.push((pkg, Some(feat_index))); - features.push(feat_index); - } + continue; + } - let edge = DependencyEdge { - kind: edge.kind, - dep_index: edge.dep_index, - cfg: edge.cfg.map(|s| s.into()), - features, - }; + visit_stack.extend(visit_dep.take()); - dep.edges.push(edge); + let mut features = Vec::new(); + for feat in edge + .features + .iter() + .map(|f| f.as_str()) + .chain(edge.uses_default_features.then_some("default")) + { + let feat_index = rdep_node.feature_index(feat); + visit_stack.push((pkg, Some(feat_index))); + features.push(feat_index); } + + let edge = DependencyEdge { + kind: edge.kind, + dep_index: edge.dep_index, + cfg: edge.cfg.map(|s| s.into()), + features, + }; + + dep.edges.push(edge); } } } @@ -1387,36 +1485,37 @@ impl Builder { // so that we can easily binary search for the crates based on their // package id with just the graph and no ancillary tables for (id, krate) in packages { - if let Some(pn) = dep_edge_map.get(&id) { - let rnode = get_rnode(&id); - - // If the crate is a root then the features it has enabled are - // accurate, however if it is not a root then we need to manually - // build up the list of enabled features as each edge is added - let features = if pn.is_root { - rnode.features.iter().cloned().collect() - } else { - feature_edge_map[&id] - .actual - .iter() - .map(|k| rnode.feature(*k).to_owned()) - .collect() - }; - - let dep_mapping = vec![None; krate.dependencies.len()]; + let Some(pn) = dep_edge_map.get(&id) else { + on_filter.filtered(krate); + continue; + }; - let krate = crate::Node::Krate { - id, - krate: N::from(krate), - features, - dep_mapping, - }; + let rnode = get_rnode(&id); - graph.add_node(krate); - edge_count += pn.deps.len(); + // If the crate is a root then the features it has enabled are + // accurate, however if it is not a root then we need to manually + // build up the list of enabled features as each edge is added + let features = if pn.is_root { + rnode.features.iter().cloned().collect() } else { - on_filter.filtered(krate); - } + feature_edge_map[&id] + .actual + .iter() + .map(|k| rnode.feature(*k).to_owned()) + .collect() + }; + + let dep_mapping = vec![None; krate.dependencies.len()]; + + let krate = crate::Node::Krate { + id, + krate: N::from(krate), + features, + dep_mapping, + }; + + graph.add_node(krate); + edge_count += pn.deps.len(); } let krates_end = graph.node_count(); @@ -1490,26 +1589,26 @@ impl Builder { // Keep edges between crates ordered as well, though we don't depend on this for srcind in 0..graph.node_count() { let srcid = crate::NodeId::new(srcind); - let pid = if let crate::Node::Krate { id, .. } = &graph[srcid] { - id - } else { + let crate::Node::Krate { id: pid, .. } = &graph[srcid] else { continue; }; - if let Some(pn) = dep_edge_map.remove(pid) { - // Attach an edge for each crate dependency, note that there might not - // actually be a target crate for the edge since crates can be pruned - // due to target configuration - for (dep_id, dep) in pn.deps { - let target_krate = if let Some(tk) = get(&graph, dep_id, None) { - tk - } else { - continue; - }; + let Some(pn) = dep_edge_map.remove(pid) else { + continue; + }; + + // Attach an edge for each crate dependency, note that there might not + // actually be a target crate for the edge since crates can be pruned + // due to target configuration + for (dep_id, dep) in pn.deps { + let target_krate = if let Some(tk) = get(&graph, dep_id, None) { + tk + } else { + continue; + }; - let attach = |graph: &mut petgraph::Graph, E>, - feat: String, - edge: Edge| { + let attach = + |graph: &mut petgraph::Graph, E>, feat: String, edge: Edge| { let feat_node = if let Some(feat_node) = get(graph, dep_id, Some(&feat)) { feat_node } else { @@ -1522,60 +1621,59 @@ impl Builder { graph.add_edge(srcid, feat_node, edge.into()); }; - let rnode = get_rnode(dep_id); - - // Add the features that were explicitly enabled by the specific - // normal/dev/build dependency - for edge in dep.edges { - let attach_direct_edge = edge.features.is_empty(); - - for feat in edge.features { - let feat = rnode.feature(feat); - attach( - &mut graph, - feat.to_owned(), - Edge::DepFeature { - kind: edge.kind, - cfg: edge.cfg.clone(), - }, - ); - } + let rnode = get_rnode(dep_id); - if let crate::Node::Krate { dep_mapping, .. } = &mut graph[srcid] { - dep_mapping[edge.dep_index] = Some(target_krate); - } + // Add the features that were explicitly enabled by the specific + // normal/dev/build dependency + for edge in dep.edges { + let attach_direct_edge = edge.features.is_empty(); - if attach_direct_edge { - graph.add_edge( - srcid, - target_krate, - Edge::Dep { - kind: edge.kind, - cfg: edge.cfg, - } - .into(), - ); - } + for feat in edge.features { + let feat = rnode.feature(feat); + attach( + &mut graph, + feat.to_owned(), + Edge::DepFeature { + kind: edge.kind, + cfg: edge.cfg.clone(), + }, + ); } - // Add the features that were toggled on via a parent crate feature - for feat in dep.features { - let feat = rnode.feature(feat); - attach(&mut graph, feat.to_owned(), Edge::Feature); + if let crate::Node::Krate { dep_mapping, .. } = &mut graph[srcid] { + dep_mapping[edge.dep_index] = Some(target_krate); + } + + if attach_direct_edge { + graph.add_edge( + srcid, + target_krate, + Edge::Dep { + kind: edge.kind, + cfg: edge.cfg, + } + .into(), + ); } } + + // Add the features that were toggled on via a parent crate feature + for feat in dep.features { + let feat = rnode.feature(feat); + attach(&mut graph, feat.to_owned(), Edge::Feature); + } } } // Now attach edges between all of features and their parent crate for (pid, features) in feature_edge_map { - let (kind, mut feature_stack) = if let Some(kind) = get(&graph, pid, None) { - if let crate::Node::Krate { features, .. } = &graph[kind] { - (kind, features.iter().cloned().collect::>()) - } else { - continue; - } - } else { + let Some((kind, mut feature_stack)) = get(&graph, pid, None).and_then(|kind| { + let crate::Node::Krate { features, .. } = &graph[kind] else { + return None; + }; + + Some((kind, features.iter().cloned().collect::>())) + }) else { continue; }; @@ -1588,15 +1686,15 @@ impl Builder { .iter() .enumerate() .find_map(|(i, n)| { - if let crate::Node::Feature { krate_index, name } = &n.weight { - if let crate::Node::Krate { id, .. } = &graph[*krate_index] { - if id == kid && name == feature { - return Some(crate::NodeId::new(i + krates_end)); - } - } + if let crate::Node::Feature { krate_index, name } = &n.weight + && let crate::Node::Krate { id, .. } = &graph[*krate_index] + && id == kid + && name == feature + { + Some(crate::NodeId::new(i + krates_end)) + } else { + None } - - None }); node_id.unwrap_or_else(|| { @@ -1617,12 +1715,13 @@ impl Builder { // have been enabled by the known edges to recursively add all of // the sub features while let Some(feat) = feature_stack.pop() { - let (_parent, sub_features) = - if let Some(i) = enabled.iter().position(|(k, _)| *k == feat) { - enabled.swap_remove(i) - } else { - continue; - }; + let Some((_parent, sub_features)) = enabled + .iter() + .position(|(k, _)| *k == feat) + .map(|i| enabled.swap_remove(i)) + else { + continue; + }; let src_id = get_or_insert(&mut graph, pid, &feat); @@ -1677,19 +1776,3 @@ impl Builder { }) } } - -/// When renaming dependencies to something with a `-` in a Cargo.toml file, -/// the actual resolved name in the metadata will replace the `-` with a `_` so -/// we need to take that into account when comparing the names as declared in -/// the crate metadata with the dependencies in the resolved graph -#[inline] -fn dep_names_match(krate_dep_name: &str, resolved_name: &str) -> bool { - if krate_dep_name.len() != resolved_name.len() { - false - } else { - krate_dep_name - .chars() - .zip(resolved_name.chars()) - .all(|(kn, rn)| kn == rn || kn == '-' && rn == '_') - } -} diff --git a/tests/snapshots/features__duplicate_versions.snap b/tests/snapshots/features__duplicate_versions.snap index f7a3990..1b023cf 100644 --- a/tests/snapshots/features__duplicate_versions.snap +++ b/tests/snapshots/features__duplicate_versions.snap @@ -58,159 +58,160 @@ digraph { 52 [ label = "crate quote 1.0.37" ] 53 [ label = "crate ron 0.8.1" ] 54 [ label = "crate rust-ini 0.19.0" ] - 55 [ label = "crate rust-ini 0.21.3" ] - 56 [ label = "crate serde 1.0.228" ] - 57 [ label = "crate serde_core 1.0.228" ] - 58 [ label = "crate serde_derive 1.0.228" ] - 59 [ label = "crate serde_json 1.0.149" ] - 60 [ label = "crate serde_spanned 0.6.9" ] - 61 [ label = "crate sha2 0.10.9" ] - 62 [ label = "crate syn 1.0.109" ] - 63 [ label = "crate syn 2.0.87" ] - 64 [ label = "crate thiserror 1.0.69" ] - 65 [ label = "crate thiserror-impl 1.0.69" ] - 66 [ label = "crate tiny-keccak 2.0.2" ] - 67 [ label = "crate toml 0.8.23" ] - 68 [ label = "crate toml_datetime 0.6.11" ] - 69 [ label = "crate toml_edit 0.22.27" ] - 70 [ label = "crate toml_write 0.1.2" ] - 71 [ label = "crate typenum 1.19.0" ] - 72 [ label = "crate ucd-trie 0.1.7" ] - 73 [ label = "crate unicase 2.9.0" ] - 74 [ label = "crate unicode-ident 1.0.13" ] - 75 [ label = "crate unicode-segmentation 1.13.2" ] - 76 [ label = "crate version_check 0.9.5" ] - 77 [ label = "crate void 1.0.2" ] - 78 [ label = "crate wasi 0.11.1+wasi-snapshot-preview1" ] - 79 [ label = "crate winnow 0.7.15" ] - 80 [ label = "crate yaml-rust2 0.8.1" ] - 81 [ label = "crate zerocopy 0.8.27" ] - 82 [ label = "crate zmij 1.0.21" ] - 83 [ label = "feature alloc" ] - 84 [ label = "feature simd" ] - 85 [ label = "feature default" ] + 55 [ label = "crate rust-ini 0.20.0" ] + 56 [ label = "crate rust-ini 0.21.3" ] + 57 [ label = "crate serde 1.0.228" ] + 58 [ label = "crate serde_core 1.0.228" ] + 59 [ label = "crate serde_derive 1.0.228" ] + 60 [ label = "crate serde_json 1.0.149" ] + 61 [ label = "crate serde_spanned 0.6.9" ] + 62 [ label = "crate sha2 0.10.9" ] + 63 [ label = "crate syn 1.0.109" ] + 64 [ label = "crate syn 2.0.87" ] + 65 [ label = "crate thiserror 1.0.69" ] + 66 [ label = "crate thiserror-impl 1.0.69" ] + 67 [ label = "crate tiny-keccak 2.0.2" ] + 68 [ label = "crate toml 0.8.23" ] + 69 [ label = "crate toml_datetime 0.6.11" ] + 70 [ label = "crate toml_edit 0.22.27" ] + 71 [ label = "crate toml_write 0.1.2" ] + 72 [ label = "crate typenum 1.19.0" ] + 73 [ label = "crate ucd-trie 0.1.7" ] + 74 [ label = "crate unicase 2.9.0" ] + 75 [ label = "crate unicode-ident 1.0.13" ] + 76 [ label = "crate unicode-segmentation 1.13.2" ] + 77 [ label = "crate version_check 0.9.5" ] + 78 [ label = "crate void 1.0.2" ] + 79 [ label = "crate wasi 0.11.1+wasi-snapshot-preview1" ] + 80 [ label = "crate winnow 0.7.15" ] + 81 [ label = "crate yaml-rust2 0.8.1" ] + 82 [ label = "crate zerocopy 0.8.27" ] + 83 [ label = "crate zmij 1.0.21" ] + 84 [ label = "feature alloc" ] + 85 [ label = "feature simd" ] 86 [ label = "feature default" ] - 87 [ label = "feature clone-impls" ] - 88 [ label = "feature full" ] - 89 [ label = "feature parsing" ] - 90 [ label = "feature printing" ] - 91 [ label = "feature proc-macro" ] - 92 [ label = "feature visit-mut" ] - 93 [ label = "feature default" ] + 87 [ label = "feature default" ] + 88 [ label = "feature clone-impls" ] + 89 [ label = "feature full" ] + 90 [ label = "feature parsing" ] + 91 [ label = "feature printing" ] + 92 [ label = "feature proc-macro" ] + 93 [ label = "feature visit-mut" ] 94 [ label = "feature default" ] 95 [ label = "feature default" ] - 96 [ label = "feature derive" ] + 96 [ label = "feature default" ] 97 [ label = "feature default" ] - 98 [ label = "feature default" ] + 98 [ label = "feature derive" ] 99 [ label = "feature default" ] - 100 [ label = "feature race" ] - 101 [ label = "feature shake" ] - 102 [ label = "feature default" ] - 103 [ label = "feature more_lengths" ] + 100 [ label = "feature default" ] + 101 [ label = "feature default" ] + 102 [ label = "feature race" ] + 103 [ label = "feature shake" ] 104 [ label = "feature default" ] - 105 [ label = "feature unstable" ] + 105 [ label = "feature more_lengths" ] 106 [ label = "feature default" ] - 107 [ label = "feature extra-traits" ] + 107 [ label = "feature unstable" ] 108 [ label = "feature default" ] - 109 [ label = "feature unstable" ] + 109 [ label = "feature extra-traits" ] 110 [ label = "feature default" ] - 111 [ label = "feature unproven" ] - 112 [ label = "feature defmt-03" ] - 113 [ label = "feature default" ] - 114 [ label = "feature default" ] - 115 [ label = "feature case-insensitive" ] - 116 [ label = "feature alloc" ] + 111 [ label = "feature unstable" ] + 112 [ label = "feature default" ] + 113 [ label = "feature unproven" ] + 114 [ label = "feature defmt-03" ] + 115 [ label = "feature default" ] + 116 [ label = "feature unicase" ] 117 [ label = "feature default" ] - 118 [ label = "feature default" ] - 119 [ label = "feature default" ] - 120 [ label = "feature std" ] - 121 [ label = "feature std" ] - 122 [ label = "feature std" ] - 123 [ label = "feature default" ] + 118 [ label = "feature case-insensitive" ] + 119 [ label = "feature alloc" ] + 120 [ label = "feature default" ] + 121 [ label = "feature default" ] + 122 [ label = "feature default" ] + 123 [ label = "feature std" ] 124 [ label = "feature std" ] 125 [ label = "feature std" ] - 126 [ label = "feature std" ] - 127 [ label = "feature default" ] - 128 [ label = "feature proc-macro" ] - 129 [ label = "feature default" ] - 130 [ label = "feature serde" ] - 131 [ label = "feature default" ] + 126 [ label = "feature default" ] + 127 [ label = "feature std" ] + 128 [ label = "feature std" ] + 129 [ label = "feature std" ] + 130 [ label = "feature default" ] + 131 [ label = "feature proc-macro" ] 132 [ label = "feature default" ] - 133 [ label = "feature default" ] - 134 [ label = "feature result" ] - 135 [ label = "feature std" ] - 136 [ label = "feature proc-macro" ] - 137 [ label = "feature derive" ] - 138 [ label = "feature default" ] - 139 [ label = "feature default" ] - 140 [ label = "feature serde" ] - 141 [ label = "feature serde" ] - 142 [ label = "feature serde" ] - 143 [ label = "feature display" ] - 144 [ label = "feature parse" ] - 145 [ label = "feature std" ] - 146 [ label = "feature default" ] - 147 [ label = "feature default" ] - 148 [ label = "feature default" ] + 133 [ label = "feature serde" ] + 134 [ label = "feature default" ] + 135 [ label = "feature default" ] + 136 [ label = "feature default" ] + 137 [ label = "feature result" ] + 138 [ label = "feature std" ] + 139 [ label = "feature proc-macro" ] + 140 [ label = "feature derive" ] + 141 [ label = "feature default" ] + 142 [ label = "feature default" ] + 143 [ label = "feature serde" ] + 144 [ label = "feature serde" ] + 145 [ label = "feature serde" ] + 146 [ label = "feature display" ] + 147 [ label = "feature parse" ] + 148 [ label = "feature std" ] 149 [ label = "feature default" ] 150 [ label = "feature default" ] - 151 [ label = "feature std" ] - 152 [ label = "feature std" ] - 153 [ label = "feature alloc" ] - 154 [ label = "feature serde_core" ] - 155 [ label = "feature yaml-rust2" ] - 156 [ label = "feature yaml" ] - 157 [ label = "feature toml" ] - 158 [ label = "feature serde_json" ] - 159 [ label = "feature rust-ini" ] - 160 [ label = "feature ron" ] - 161 [ label = "feature json5_rs" ] - 162 [ label = "feature json5_rs" ] - 163 [ label = "feature json5" ] - 164 [ label = "feature json" ] - 165 [ label = "feature ini" ] - 166 [ label = "feature convert-case" ] - 167 [ label = "feature async" ] - 168 [ label = "feature convert_case" ] - 169 [ label = "feature async-trait" ] - 170 [ label = "feature limit_128" ] - 171 [ label = "feature core-api" ] - 172 [ label = "feature block-buffer" ] - 173 [ label = "feature defmt-03" ] - 174 [ label = "feature alloc" ] - 175 [ label = "feature unicase" ] - 176 [ label = "feature unicase" ] - 177 [ label = "feature defmt" ] - 178 [ label = "feature defmt-03" ] - 179 [ label = "feature default" ] - 180 [ label = "feature inline-more" ] - 181 [ label = "feature ahash" ] - 182 [ label = "feature allocator-api2" ] - 183 [ label = "feature alloc" ] - 184 [ label = "feature std" ] + 151 [ label = "feature default" ] + 152 [ label = "feature default" ] + 153 [ label = "feature default" ] + 154 [ label = "feature std" ] + 155 [ label = "feature std" ] + 156 [ label = "feature alloc" ] + 157 [ label = "feature serde_core" ] + 158 [ label = "feature yaml-rust2" ] + 159 [ label = "feature yaml" ] + 160 [ label = "feature toml" ] + 161 [ label = "feature serde_json" ] + 162 [ label = "feature rust-ini" ] + 163 [ label = "feature ron" ] + 164 [ label = "feature json5_rs" ] + 165 [ label = "feature json5_rs" ] + 166 [ label = "feature json5" ] + 167 [ label = "feature json" ] + 168 [ label = "feature ini" ] + 169 [ label = "feature convert-case" ] + 170 [ label = "feature async" ] + 171 [ label = "feature convert_case" ] + 172 [ label = "feature async-trait" ] + 173 [ label = "feature limit_128" ] + 174 [ label = "feature core-api" ] + 175 [ label = "feature block-buffer" ] + 176 [ label = "feature defmt-03" ] + 177 [ label = "feature alloc" ] + 178 [ label = "feature unicase" ] + 179 [ label = "feature defmt" ] + 180 [ label = "feature defmt-03" ] + 181 [ label = "feature default" ] + 182 [ label = "feature inline-more" ] + 183 [ label = "feature ahash" ] + 184 [ label = "feature allocator-api2" ] 185 [ label = "feature alloc" ] 186 [ label = "feature std" ] - 187 [ label = "feature std" ] - 188 [ label = "feature memchr" ] + 187 [ label = "feature alloc" ] + 188 [ label = "feature std" ] 189 [ label = "feature std" ] - 190 [ label = "feature syn-error" ] - 191 [ label = "feature syn" ] - 192 [ label = "feature unicase" ] - 193 [ label = "feature std" ] - 194 [ label = "feature serde_derive" ] + 190 [ label = "feature memchr" ] + 191 [ label = "feature std" ] + 192 [ label = "feature syn-error" ] + 193 [ label = "feature syn" ] + 194 [ label = "feature unicase" ] 195 [ label = "feature std" ] - 196 [ label = "feature parse" ] - 197 [ label = "feature display" ] - 198 [ label = "feature std" ] - 199 [ label = "feature alloc" ] + 196 [ label = "feature serde_derive" ] + 197 [ label = "feature std" ] + 198 [ label = "feature parse" ] + 199 [ label = "feature display" ] 200 [ label = "feature std" ] 201 [ label = "feature alloc" ] - 202 [ label = "feature encoding" ] + 202 [ label = "feature std" ] + 203 [ label = "feature alloc" ] + 204 [ label = "feature encoding" ] 0 -> 8 [ label = "" ] - 0 -> 83 [ label = " 'cfg(not(all(target_arch = \"arm\", target_os = \"none\")))'" ] - 0 -> 76 [ label = "(build)" ] - 0 -> 84 [ label = "" ] - 3 -> 85 [ label = "" ] + 0 -> 84 [ label = " 'cfg(not(all(target_arch = \"arm\", target_os = \"none\")))'" ] + 0 -> 77 [ label = "(build)" ] + 0 -> 85 [ label = "" ] 3 -> 86 [ label = "" ] 3 -> 87 [ label = "" ] 3 -> 88 [ label = "" ] @@ -218,383 +219,393 @@ digraph { 3 -> 90 [ label = "" ] 3 -> 91 [ label = "" ] 3 -> 92 [ label = "" ] - 6 -> 57 [ label = "" ] + 3 -> 93 [ label = "" ] + 6 -> 58 [ label = "" ] 7 -> 26 [ label = "" ] 9 -> 3 [ label = "" ] 9 -> 12 [ label = "" ] 9 -> 34 [ label = "" ] - 9 -> 93 [ label = "" ] - 9 -> 44 [ label = "" ] 9 -> 94 [ label = "" ] + 9 -> 44 [ label = "" ] 9 -> 95 [ label = "" ] 9 -> 96 [ label = "" ] 9 -> 97 [ label = "" ] 9 -> 98 [ label = "" ] 9 -> 99 [ label = "" ] + 9 -> 100 [ label = "" ] + 9 -> 101 [ label = "" ] 10 -> 11 [ label = "" ] 11 -> 27 [ label = "" ] - 11 -> 100 [ label = "" ] - 11 -> 83 [ label = "" ] - 11 -> 101 [ label = "" ] 11 -> 102 [ label = "" ] - 12 -> 75 [ label = "" ] + 11 -> 84 [ label = "" ] + 11 -> 103 [ label = "" ] + 11 -> 104 [ label = "" ] + 12 -> 76 [ label = "" ] 13 -> 35 [ label = " 'aarch64-linux-android'" ] 13 -> 35 [ label = " 'cfg(all(target_arch = \"aarch64\", target_os = \"linux\"))'" ] 13 -> 35 [ label = " 'cfg(all(target_arch = \"aarch64\", target_vendor = \"apple\"))'" ] 13 -> 35 [ label = " 'cfg(all(target_arch = \"loongarch64\", target_os = \"linux\"))'" ] - 15 -> 103 [ label = "" ] - 15 -> 71 [ label = "" ] - 16 -> 104 [ label = "" ] + 15 -> 105 [ label = "" ] + 15 -> 72 [ label = "" ] + 16 -> 106 [ label = "" ] 16 -> 17 [ label = "" ] - 17 -> 105 [ label = "" ] - 17 -> 106 [ label = "" ] - 17 -> 85 [ label = "" ] - 17 -> 86 [ label = "" ] - 17 -> 88 [ label = "" ] 17 -> 107 [ label = "" ] 17 -> 108 [ label = "" ] - 18 -> 64 [ label = "" ] + 17 -> 86 [ label = "" ] + 17 -> 87 [ label = "" ] + 17 -> 89 [ label = "" ] + 17 -> 109 [ label = "" ] + 17 -> 110 [ label = "" ] + 18 -> 65 [ label = "" ] 19 -> 7 [ label = "" ] 19 -> 15 [ label = "" ] 20 -> 10 [ label = "" ] 21 -> 38 [ label = "" ] - 21 -> 109 [ label = "" ] - 21 -> 77 [ label = "" ] + 21 -> 111 [ label = "" ] + 21 -> 78 [ label = "" ] 22 -> 16 [ label = "" ] 23 -> 8 [ label = "" ] - 25 -> 110 [ label = "" ] - 25 -> 16 [ label = "" ] - 25 -> 111 [ label = "" ] - 25 -> 22 [ label = "" ] 25 -> 112 [ label = "" ] + 25 -> 16 [ label = "" ] 25 -> 113 [ label = "" ] + 25 -> 22 [ label = "" ] 25 -> 114 [ label = "" ] 25 -> 115 [ label = "" ] - 26 -> 71 [ label = "" ] - 26 -> 76 [ label = "(build)" ] + 25 -> 116 [ label = "" ] + 25 -> 117 [ label = "" ] + 25 -> 118 [ label = "" ] + 26 -> 72 [ label = "" ] + 26 -> 77 [ label = "(build)" ] 27 -> 8 [ label = "" ] 27 -> 35 [ label = " 'cfg(unix)'" ] - 27 -> 78 [ label = " 'cfg(target_os = \"wasi\")'" ] + 27 -> 79 [ label = " 'cfg(target_os = \"wasi\")'" ] 29 -> 0 [ label = "" ] - 29 -> 116 [ label = "" ] - 31 -> 117 [ label = "" ] + 29 -> 119 [ label = "" ] + 31 -> 120 [ label = "" ] 32 -> 24 [ label = "" ] 32 -> 30 [ label = "" ] - 34 -> 118 [ label = "" ] - 34 -> 119 [ label = "" ] - 34 -> 95 [ label = "" ] + 34 -> 121 [ label = "" ] + 34 -> 122 [ label = "" ] + 34 -> 97 [ label = "" ] 38 -> 39 [ label = "" ] 40 -> 36 [ label = "" ] - 40 -> 120 [ label = "" ] + 40 -> 123 [ label = "" ] 40 -> 37 [ label = "" ] - 40 -> 121 [ label = "" ] + 40 -> 124 [ label = "" ] 42 -> 20 [ label = "" ] - 42 -> 122 [ label = "" ] + 42 -> 125 [ label = "" ] 42 -> 28 [ label = "" ] 43 -> 20 [ label = "" ] - 43 -> 122 [ label = "" ] + 43 -> 125 [ label = "" ] 43 -> 29 [ label = "" ] - 45 -> 123 [ label = "" ] - 45 -> 72 [ label = "" ] - 45 -> 124 [ label = "" ] + 45 -> 126 [ label = "" ] + 45 -> 73 [ label = "" ] + 45 -> 127 [ label = "" ] 46 -> 45 [ label = "" ] - 46 -> 125 [ label = "" ] + 46 -> 128 [ label = "" ] 46 -> 47 [ label = "" ] - 46 -> 126 [ label = "" ] + 46 -> 129 [ label = "" ] 47 -> 45 [ label = "" ] - 47 -> 125 [ label = "" ] - 47 -> 127 [ label = "" ] - 47 -> 85 [ label = "" ] + 47 -> 128 [ label = "" ] + 47 -> 130 [ label = "" ] 47 -> 86 [ label = "" ] - 47 -> 108 [ label = "" ] - 48 -> 118 [ label = "" ] - 48 -> 61 [ label = "(build)" ] + 47 -> 87 [ label = "" ] + 47 -> 110 [ label = "" ] + 48 -> 121 [ label = "" ] + 48 -> 62 [ label = "(build)" ] 49 -> 50 [ label = "" ] - 49 -> 85 [ label = "" ] 49 -> 86 [ label = "" ] - 49 -> 62 [ label = "" ] - 49 -> 76 [ label = "(build)" ] - 50 -> 85 [ label = "" ] + 49 -> 87 [ label = "" ] + 49 -> 63 [ label = "" ] + 49 -> 77 [ label = "(build)" ] 50 -> 86 [ label = "" ] - 50 -> 76 [ label = "(build)" ] - 51 -> 74 [ label = "" ] + 50 -> 87 [ label = "" ] + 50 -> 77 [ label = "(build)" ] + 51 -> 75 [ label = "" ] 52 -> 51 [ label = "" ] - 52 -> 128 [ label = "" ] - 53 -> 129 [ label = "" ] - 53 -> 130 [ label = "" ] - 53 -> 95 [ label = "" ] - 53 -> 131 [ label = "" ] + 52 -> 131 [ label = "" ] + 53 -> 132 [ label = "" ] + 53 -> 133 [ label = "" ] + 53 -> 97 [ label = "" ] + 53 -> 134 [ label = "" ] 54 -> 8 [ label = "" ] - 54 -> 132 [ label = "" ] + 54 -> 135 [ label = "" ] + 54 -> 74 [ label = "" ] 55 -> 8 [ label = "" ] - 55 -> 133 [ label = "" ] - 55 -> 73 [ label = "" ] - 56 -> 134 [ label = "" ] - 56 -> 135 [ label = "" ] - 56 -> 131 [ label = "" ] - 58 -> 128 [ label = "" ] - 58 -> 136 [ label = "" ] - 58 -> 87 [ label = "" ] - 58 -> 137 [ label = "" ] - 58 -> 89 [ label = "" ] - 58 -> 90 [ label = "" ] - 58 -> 91 [ label = "" ] - 59 -> 33 [ label = "" ] - 59 -> 36 [ label = "" ] - 59 -> 120 [ label = "" ] - 59 -> 57 [ label = "" ] - 59 -> 135 [ label = "" ] - 59 -> 82 [ label = "" ] - 60 -> 95 [ label = "" ] - 61 -> 8 [ label = "" ] - 61 -> 13 [ label = " 'cfg(any(target_arch = \"aarch64\", target_arch = \"x86_64\", target_arch = \"x86\"))'" ] - 61 -> 138 [ label = "" ] - 62 -> 51 [ label = "" ] - 62 -> 74 [ label = "" ] + 55 -> 136 [ label = "" ] + 56 -> 8 [ label = "" ] + 56 -> 136 [ label = "" ] + 56 -> 74 [ label = "" ] + 57 -> 137 [ label = "" ] + 57 -> 138 [ label = "" ] + 57 -> 134 [ label = "" ] + 59 -> 131 [ label = "" ] + 59 -> 139 [ label = "" ] + 59 -> 88 [ label = "" ] + 59 -> 140 [ label = "" ] + 59 -> 90 [ label = "" ] + 59 -> 91 [ label = "" ] + 59 -> 92 [ label = "" ] + 60 -> 33 [ label = "" ] + 60 -> 36 [ label = "" ] + 60 -> 123 [ label = "" ] + 60 -> 58 [ label = "" ] + 60 -> 138 [ label = "" ] + 60 -> 83 [ label = "" ] + 61 -> 97 [ label = "" ] + 62 -> 8 [ label = "" ] + 62 -> 13 [ label = " 'cfg(any(target_arch = \"aarch64\", target_arch = \"x86_64\", target_arch = \"x86\"))'" ] + 62 -> 141 [ label = "" ] 63 -> 51 [ label = "" ] - 63 -> 128 [ label = "" ] - 63 -> 52 [ label = "" ] - 63 -> 136 [ label = "" ] - 63 -> 74 [ label = "" ] - 64 -> 65 [ label = "" ] - 65 -> 85 [ label = "" ] - 65 -> 86 [ label = "" ] - 65 -> 108 [ label = "" ] - 66 -> 139 [ label = "" ] - 67 -> 95 [ label = "" ] - 67 -> 140 [ label = "" ] - 67 -> 141 [ label = "" ] + 63 -> 75 [ label = "" ] + 64 -> 51 [ label = "" ] + 64 -> 131 [ label = "" ] + 64 -> 52 [ label = "" ] + 64 -> 139 [ label = "" ] + 64 -> 75 [ label = "" ] + 65 -> 66 [ label = "" ] + 66 -> 86 [ label = "" ] + 66 -> 87 [ label = "" ] + 66 -> 110 [ label = "" ] 67 -> 142 [ label = "" ] - 67 -> 143 [ label = "" ] - 67 -> 144 [ label = "" ] - 68 -> 95 [ label = "" ] - 69 -> 145 [ label = "" ] - 69 -> 146 [ label = "" ] - 69 -> 95 [ label = "" ] - 69 -> 140 [ label = "" ] - 69 -> 68 [ label = "" ] - 69 -> 141 [ label = "" ] - 69 -> 147 [ label = "" ] - 69 -> 148 [ label = "" ] - 80 -> 149 [ label = "" ] - 80 -> 150 [ label = "" ] - 80 -> 31 [ label = "" ] - 116 -> 1 [ label = "" ] - 151 -> 2 [ label = "" ] - 149 -> 2 [ label = "" ] - 149 -> 151 [ label = "" ] - 152 -> 4 [ label = "" ] - 152 -> 153 [ label = "" ] - 129 -> 4 [ label = "" ] - 129 -> 152 [ label = "" ] - 153 -> 4 [ label = "" ] - 104 -> 5 [ label = "" ] - 154 -> 6 [ label = "" ] - 154 -> 57 [ label = "" ] - 130 -> 6 [ label = "" ] - 130 -> 154 [ label = "" ] - 155 -> 9 [ label = "" ] - 155 -> 80 [ label = "" ] - 156 -> 9 [ label = "" ] - 156 -> 155 [ label = "" ] - 157 -> 9 [ label = "" ] - 157 -> 67 [ label = "" ] + 68 -> 97 [ label = "" ] + 68 -> 143 [ label = "" ] + 68 -> 144 [ label = "" ] + 68 -> 145 [ label = "" ] + 68 -> 146 [ label = "" ] + 68 -> 147 [ label = "" ] + 69 -> 97 [ label = "" ] + 70 -> 148 [ label = "" ] + 70 -> 149 [ label = "" ] + 70 -> 97 [ label = "" ] + 70 -> 143 [ label = "" ] + 70 -> 69 [ label = "" ] + 70 -> 144 [ label = "" ] + 70 -> 150 [ label = "" ] + 70 -> 151 [ label = "" ] + 81 -> 152 [ label = "" ] + 81 -> 153 [ label = "" ] + 81 -> 31 [ label = "" ] + 119 -> 1 [ label = "" ] + 154 -> 2 [ label = "" ] + 152 -> 2 [ label = "" ] + 152 -> 154 [ label = "" ] + 155 -> 4 [ label = "" ] + 155 -> 156 [ label = "" ] + 132 -> 4 [ label = "" ] + 132 -> 155 [ label = "" ] + 156 -> 4 [ label = "" ] + 106 -> 5 [ label = "" ] + 157 -> 6 [ label = "" ] + 157 -> 58 [ label = "" ] + 133 -> 6 [ label = "" ] + 133 -> 157 [ label = "" ] 158 -> 9 [ label = "" ] - 158 -> 59 [ label = "" ] + 158 -> 81 [ label = "" ] 159 -> 9 [ label = "" ] + 159 -> 158 [ label = "" ] 160 -> 9 [ label = "" ] - 160 -> 53 [ label = "" ] + 160 -> 68 [ label = "" ] 161 -> 9 [ label = "" ] - 161 -> 162 [ label = "" ] + 161 -> 60 [ label = "" ] + 162 -> 9 [ label = "" ] + 162 -> 55 [ label = "" ] 163 -> 9 [ label = "" ] - 163 -> 161 [ label = "" ] - 163 -> 96 [ label = "" ] + 163 -> 53 [ label = "" ] 164 -> 9 [ label = "" ] - 164 -> 158 [ label = "" ] - 165 -> 9 [ label = "" ] - 165 -> 159 [ label = "" ] - 110 -> 9 [ label = "" ] - 110 -> 157 [ label = "" ] - 110 -> 164 [ label = "" ] - 110 -> 156 [ label = "" ] - 110 -> 165 [ label = "" ] - 110 -> 160 [ label = "" ] - 110 -> 163 [ label = "" ] - 110 -> 166 [ label = "" ] - 110 -> 167 [ label = "" ] - 168 -> 9 [ label = "" ] - 168 -> 12 [ label = "" ] + 164 -> 165 [ label = "" ] 166 -> 9 [ label = "" ] - 166 -> 168 [ label = "" ] - 169 -> 9 [ label = "" ] - 169 -> 3 [ label = "" ] + 166 -> 164 [ label = "" ] + 166 -> 98 [ label = "" ] 167 -> 9 [ label = "" ] - 167 -> 169 [ label = "" ] - 170 -> 14 [ label = "" ] - 139 -> 14 [ label = "" ] - 139 -> 170 [ label = "" ] - 105 -> 18 [ label = "" ] - 138 -> 19 [ label = "" ] - 138 -> 171 [ label = "" ] - 171 -> 19 [ label = "" ] - 171 -> 172 [ label = "" ] - 172 -> 19 [ label = "" ] - 172 -> 7 [ label = "" ] - 122 -> 20 [ label = "" ] - 111 -> 21 [ label = "" ] - 111 -> 109 [ label = "" ] - 112 -> 22 [ label = "" ] - 112 -> 173 [ label = "" ] - 150 -> 23 [ label = "" ] - 150 -> 174 [ label = "" ] - 174 -> 23 [ label = "" ] - 175 -> 25 [ label = "" ] - 175 -> 176 [ label = "" ] - 175 -> 115 [ label = "" ] - 177 -> 25 [ label = "" ] - 177 -> 16 [ label = "" ] - 177 -> 178 [ label = "" ] + 167 -> 161 [ label = "" ] + 168 -> 9 [ label = "" ] + 168 -> 162 [ label = "" ] + 112 -> 9 [ label = "" ] + 112 -> 160 [ label = "" ] + 112 -> 167 [ label = "" ] + 112 -> 159 [ label = "" ] + 112 -> 168 [ label = "" ] + 112 -> 163 [ label = "" ] + 112 -> 166 [ label = "" ] + 112 -> 169 [ label = "" ] + 112 -> 170 [ label = "" ] + 171 -> 9 [ label = "" ] + 171 -> 12 [ label = "" ] + 169 -> 9 [ label = "" ] + 169 -> 171 [ label = "" ] + 172 -> 9 [ label = "" ] + 172 -> 3 [ label = "" ] + 170 -> 9 [ label = "" ] + 170 -> 172 [ label = "" ] + 173 -> 14 [ label = "" ] + 142 -> 14 [ label = "" ] + 142 -> 173 [ label = "" ] + 107 -> 18 [ label = "" ] + 141 -> 19 [ label = "" ] + 141 -> 174 [ label = "" ] + 174 -> 19 [ label = "" ] + 174 -> 175 [ label = "" ] + 175 -> 19 [ label = "" ] + 175 -> 7 [ label = "" ] + 125 -> 20 [ label = "" ] + 113 -> 21 [ label = "" ] + 113 -> 111 [ label = "" ] + 114 -> 22 [ label = "" ] + 114 -> 176 [ label = "" ] + 153 -> 23 [ label = "" ] + 153 -> 177 [ label = "" ] + 177 -> 23 [ label = "" ] + 178 -> 25 [ label = "" ] + 178 -> 116 [ label = "" ] + 178 -> 118 [ label = "" ] 179 -> 25 [ label = "" ] - 103 -> 26 [ label = "" ] - 180 -> 29 [ label = "" ] - 117 -> 29 [ label = "" ] - 117 -> 181 [ label = "" ] - 117 -> 180 [ label = "" ] - 117 -> 182 [ label = "" ] + 179 -> 16 [ label = "" ] + 179 -> 180 [ label = "" ] + 181 -> 25 [ label = "" ] + 105 -> 26 [ label = "" ] 182 -> 29 [ label = "" ] - 182 -> 1 [ label = "" ] - 181 -> 29 [ label = "" ] - 181 -> 0 [ label = "" ] - 145 -> 32 [ label = "" ] - 146 -> 32 [ label = "" ] - 146 -> 145 [ label = "" ] - 120 -> 36 [ label = "" ] + 120 -> 29 [ label = "" ] 120 -> 183 [ label = "" ] + 120 -> 182 [ label = "" ] + 120 -> 184 [ label = "" ] + 184 -> 29 [ label = "" ] + 184 -> 1 [ label = "" ] + 183 -> 29 [ label = "" ] + 183 -> 0 [ label = "" ] + 148 -> 32 [ label = "" ] + 149 -> 32 [ label = "" ] + 149 -> 148 [ label = "" ] 123 -> 36 [ label = "" ] - 123 -> 120 [ label = "" ] - 183 -> 36 [ label = "" ] - 121 -> 37 [ label = "" ] - 109 -> 38 [ label = "" ] - 184 -> 40 [ label = "" ] - 184 -> 185 [ label = "" ] - 184 -> 120 [ label = "" ] - 184 -> 121 [ label = "" ] - 93 -> 40 [ label = "" ] - 93 -> 184 [ label = "" ] - 185 -> 40 [ label = "" ] - 100 -> 41 [ label = "" ] - 83 -> 41 [ label = "" ] - 83 -> 100 [ label = "" ] - 186 -> 42 [ label = "" ] - 186 -> 122 [ label = "" ] - 132 -> 42 [ label = "" ] - 132 -> 186 [ label = "" ] - 187 -> 43 [ label = "" ] - 187 -> 122 [ label = "" ] - 133 -> 43 [ label = "" ] - 133 -> 187 [ label = "" ] - 125 -> 45 [ label = "" ] - 125 -> 124 [ label = "" ] - 188 -> 45 [ label = "" ] - 188 -> 36 [ label = "" ] - 118 -> 45 [ label = "" ] - 118 -> 125 [ label = "" ] - 118 -> 188 [ label = "" ] - 189 -> 46 [ label = "" ] + 123 -> 185 [ label = "" ] + 126 -> 36 [ label = "" ] + 126 -> 123 [ label = "" ] + 185 -> 36 [ label = "" ] + 124 -> 37 [ label = "" ] + 111 -> 38 [ label = "" ] + 186 -> 40 [ label = "" ] + 186 -> 187 [ label = "" ] + 186 -> 123 [ label = "" ] + 186 -> 124 [ label = "" ] + 94 -> 40 [ label = "" ] + 94 -> 186 [ label = "" ] + 187 -> 40 [ label = "" ] + 102 -> 41 [ label = "" ] + 84 -> 41 [ label = "" ] + 84 -> 102 [ label = "" ] + 188 -> 42 [ label = "" ] + 188 -> 125 [ label = "" ] + 135 -> 42 [ label = "" ] + 135 -> 188 [ label = "" ] + 189 -> 43 [ label = "" ] 189 -> 125 [ label = "" ] - 189 -> 126 [ label = "" ] - 119 -> 46 [ label = "" ] - 119 -> 189 [ label = "" ] - 126 -> 47 [ label = "" ] - 126 -> 125 [ label = "" ] - 127 -> 48 [ label = "" ] - 190 -> 49 [ label = "" ] - 190 -> 191 [ label = "" ] - 191 -> 49 [ label = "" ] - 191 -> 62 [ label = "" ] - 106 -> 49 [ label = "" ] - 106 -> 190 [ label = "" ] - 128 -> 51 [ label = "" ] - 85 -> 51 [ label = "" ] - 85 -> 128 [ label = "" ] - 136 -> 52 [ label = "" ] - 136 -> 128 [ label = "" ] - 86 -> 52 [ label = "" ] - 86 -> 136 [ label = "" ] - 94 -> 53 [ label = "" ] - 113 -> 54 [ label = "" ] - 192 -> 55 [ label = "" ] - 192 -> 73 [ label = "" ] - 114 -> 55 [ label = "" ] - 115 -> 55 [ label = "" ] - 115 -> 192 [ label = "" ] - 193 -> 56 [ label = "" ] - 193 -> 135 [ label = "" ] + 136 -> 43 [ label = "" ] + 136 -> 189 [ label = "" ] + 128 -> 45 [ label = "" ] + 128 -> 127 [ label = "" ] + 190 -> 45 [ label = "" ] + 190 -> 36 [ label = "" ] + 121 -> 45 [ label = "" ] + 121 -> 128 [ label = "" ] + 121 -> 190 [ label = "" ] + 191 -> 46 [ label = "" ] + 191 -> 128 [ label = "" ] + 191 -> 129 [ label = "" ] + 122 -> 46 [ label = "" ] + 122 -> 191 [ label = "" ] + 129 -> 47 [ label = "" ] + 129 -> 128 [ label = "" ] + 130 -> 48 [ label = "" ] + 192 -> 49 [ label = "" ] + 192 -> 193 [ label = "" ] + 193 -> 49 [ label = "" ] + 193 -> 63 [ label = "" ] + 108 -> 49 [ label = "" ] + 108 -> 192 [ label = "" ] + 131 -> 51 [ label = "" ] + 86 -> 51 [ label = "" ] + 86 -> 131 [ label = "" ] + 139 -> 52 [ label = "" ] + 139 -> 131 [ label = "" ] + 87 -> 52 [ label = "" ] + 87 -> 139 [ label = "" ] + 95 -> 53 [ label = "" ] + 116 -> 54 [ label = "" ] + 116 -> 74 [ label = "" ] + 115 -> 54 [ label = "" ] + 96 -> 55 [ label = "" ] 194 -> 56 [ label = "" ] - 194 -> 58 [ label = "" ] - 96 -> 56 [ label = "" ] - 96 -> 194 [ label = "" ] - 95 -> 56 [ label = "" ] - 95 -> 193 [ label = "" ] - 135 -> 57 [ label = "" ] - 134 -> 57 [ label = "" ] - 131 -> 58 [ label = "" ] - 195 -> 59 [ label = "" ] - 195 -> 120 [ label = "" ] - 195 -> 135 [ label = "" ] - 97 -> 59 [ label = "" ] - 97 -> 195 [ label = "" ] - 140 -> 60 [ label = "" ] - 140 -> 56 [ label = "" ] - 92 -> 63 [ label = "" ] - 91 -> 63 [ label = "" ] - 91 -> 128 [ label = "" ] - 90 -> 63 [ label = "" ] - 90 -> 52 [ label = "" ] - 89 -> 63 [ label = "" ] - 88 -> 63 [ label = "" ] - 107 -> 63 [ label = "" ] - 137 -> 63 [ label = "" ] - 108 -> 63 [ label = "" ] - 108 -> 137 [ label = "" ] - 108 -> 89 [ label = "" ] - 108 -> 90 [ label = "" ] - 108 -> 87 [ label = "" ] - 108 -> 91 [ label = "" ] - 87 -> 63 [ label = "" ] - 101 -> 66 [ label = "" ] - 102 -> 66 [ label = "" ] - 196 -> 67 [ label = "" ] - 196 -> 69 [ label = "" ] - 197 -> 67 [ label = "" ] - 197 -> 69 [ label = "" ] - 98 -> 67 [ label = "" ] + 194 -> 74 [ label = "" ] + 117 -> 56 [ label = "" ] + 118 -> 56 [ label = "" ] + 118 -> 194 [ label = "" ] + 195 -> 57 [ label = "" ] + 195 -> 138 [ label = "" ] + 196 -> 57 [ label = "" ] + 196 -> 59 [ label = "" ] + 98 -> 57 [ label = "" ] 98 -> 196 [ label = "" ] - 98 -> 197 [ label = "" ] - 141 -> 68 [ label = "" ] - 141 -> 56 [ label = "" ] - 142 -> 69 [ label = "" ] - 142 -> 56 [ label = "" ] - 142 -> 141 [ label = "" ] - 142 -> 60 [ label = "" ] - 144 -> 69 [ label = "" ] - 144 -> 79 [ label = "" ] - 143 -> 69 [ label = "" ] - 143 -> 70 [ label = "" ] + 97 -> 57 [ label = "" ] + 97 -> 195 [ label = "" ] + 138 -> 58 [ label = "" ] + 137 -> 58 [ label = "" ] + 134 -> 59 [ label = "" ] + 197 -> 60 [ label = "" ] + 197 -> 123 [ label = "" ] + 197 -> 138 [ label = "" ] + 99 -> 60 [ label = "" ] + 99 -> 197 [ label = "" ] + 143 -> 61 [ label = "" ] + 143 -> 57 [ label = "" ] + 93 -> 64 [ label = "" ] + 92 -> 64 [ label = "" ] + 92 -> 131 [ label = "" ] + 91 -> 64 [ label = "" ] + 91 -> 52 [ label = "" ] + 90 -> 64 [ label = "" ] + 89 -> 64 [ label = "" ] + 109 -> 64 [ label = "" ] + 140 -> 64 [ label = "" ] + 110 -> 64 [ label = "" ] + 110 -> 140 [ label = "" ] + 110 -> 90 [ label = "" ] + 110 -> 91 [ label = "" ] + 110 -> 88 [ label = "" ] + 110 -> 92 [ label = "" ] + 88 -> 64 [ label = "" ] + 103 -> 67 [ label = "" ] + 104 -> 67 [ label = "" ] + 198 -> 68 [ label = "" ] 198 -> 70 [ label = "" ] - 198 -> 199 [ label = "" ] - 147 -> 70 [ label = "" ] - 147 -> 198 [ label = "" ] + 199 -> 68 [ label = "" ] 199 -> 70 [ label = "" ] - 124 -> 72 [ label = "" ] - 200 -> 79 [ label = "" ] + 100 -> 68 [ label = "" ] + 100 -> 198 [ label = "" ] + 100 -> 199 [ label = "" ] + 144 -> 69 [ label = "" ] + 144 -> 57 [ label = "" ] + 145 -> 70 [ label = "" ] + 145 -> 57 [ label = "" ] + 145 -> 144 [ label = "" ] + 145 -> 61 [ label = "" ] + 147 -> 70 [ label = "" ] + 147 -> 80 [ label = "" ] + 146 -> 70 [ label = "" ] + 146 -> 71 [ label = "" ] + 200 -> 71 [ label = "" ] 200 -> 201 [ label = "" ] - 148 -> 79 [ label = "" ] - 148 -> 200 [ label = "" ] - 201 -> 79 [ label = "" ] + 150 -> 71 [ label = "" ] + 150 -> 200 [ label = "" ] + 201 -> 71 [ label = "" ] + 127 -> 73 [ label = "" ] 202 -> 80 [ label = "" ] - 202 -> 23 [ label = "" ] - 99 -> 80 [ label = "" ] - 99 -> 202 [ label = "" ] - 84 -> 81 [ label = "" ] + 202 -> 203 [ label = "" ] + 151 -> 80 [ label = "" ] + 151 -> 202 [ label = "" ] + 203 -> 80 [ label = "" ] + 204 -> 81 [ label = "" ] + 204 -> 23 [ label = "" ] + 101 -> 81 [ label = "" ] + 101 -> 204 [ label = "" ] + 85 -> 82 [ label = "" ] } diff --git a/tests/snapshots/features__ignores_features_for_ignored_kinds.snap b/tests/snapshots/features__ignores_features_for_ignored_kinds.snap index fe9ca40..b044668 100644 --- a/tests/snapshots/features__ignores_features_for_ignored_kinds.snap +++ b/tests/snapshots/features__ignores_features_for_ignored_kinds.snap @@ -3,799 +3,825 @@ source: tests/features.rs expression: dotgraph --- digraph { - 0 [ label = "crate approx 0.4.0" ] - 1 [ label = "crate arrayref 0.3.7" ] - 2 [ label = "crate async-trait 0.1.77" ] - 3 [ label = "crate autocfg 1.1.0" ] - 4 [ label = "crate base64 0.13.1" ] - 5 [ label = "crate bitflags 1.3.2" ] - 6 [ label = "crate block-buffer 0.10.4" ] - 7 [ label = "crate block-buffer 0.3.3" ] - 8 [ label = "crate byte-tools 0.2.0" ] - 9 [ label = "crate bytes 1.6.0" ] - 10 [ label = "crate camino 1.1.6" ] - 11 [ label = "crate cargo-platform 0.1.8" ] - 12 [ label = "crate cargo_metadata 0.15.4" ] - 13 [ label = "crate cargo_metadata 0.17.0" ] - 14 [ label = "crate cauchy 0.4.0" ] - 15 [ label = "crate cblas-sys 0.1.4" ] - 16 [ label = "crate cc 1.0.83" ] - 17 [ label = "crate cfg-expr 0.11.0" ] - 18 [ label = "crate cfg-expr 0.15.7" ] - 19 [ label = "crate cfg-if 1.0.0" ] - 20 [ label = "crate cmake 0.1.50" ] - 21 [ label = "crate config 0.13.4" ] - 22 [ label = "crate cpufeatures 0.2.12" ] - 23 [ label = "crate crypto-common 0.1.6" ] - 24 [ label = "crate digest 0.10.7" ] - 25 [ label = "crate digest 0.7.6" ] - 26 [ label = "crate equivalent 1.0.1" ] - 27 [ label = "crate feature-bug 0.1.0 path+file:///krates/tests/feature-bug" ] - 28 [ label = "crate fixedbitset 0.4.2" ] - 29 [ label = "crate fnv 1.0.7" ] - 30 [ label = "crate generic-array 0.14.7" ] - 31 [ label = "crate generic-array 0.9.1" ] - 32 [ label = "crate getrandom 0.2.12" ] - 33 [ label = "crate hashbrown 0.14.3" ] - 34 [ label = "crate home 0.5.9" ] - 35 [ label = "crate http 0.2.12" ] - 36 [ label = "crate indexmap 2.2.6" ] - 37 [ label = "crate itoa 1.0.10" ] - 38 [ label = "crate json5 0.4.1" ] - 39 [ label = "crate katexit 0.1.4" ] - 40 [ label = "crate krates 0.12.2 git+https://github.com/EmbarkStudios/krates?tag=0.12.2" ] - 41 [ label = "crate krates 0.14.1 git+https://github.com/EmbarkStudios/krates?tag=0.14.1" ] - 42 [ label = "crate lapack-sys 0.14.0" ] - 43 [ label = "crate lax 0.16.0" ] - 44 [ label = "crate lazy_static 1.4.0" ] - 45 [ label = "crate libc 0.2.152" ] - 46 [ label = "crate linked-hash-map 0.5.6" ] - 47 [ label = "crate matrixmultiply 0.3.8" ] - 48 [ label = "crate md-5 0.7.0" ] - 49 [ label = "crate md5 0.7.0" ] - 50 [ label = "crate memchr 2.7.1" ] - 51 [ label = "crate minimal-lexical 0.2.1" ] - 52 [ label = "crate ndarray 0.15.6" ] - 53 [ label = "crate ndarray-linalg 0.16.0" ] - 54 [ label = "crate netlib-src 0.8.0" ] - 55 [ label = "crate nom 7.1.3" ] - 56 [ label = "crate num-complex 0.4.4" ] - 57 [ label = "crate num-integer 0.1.45" ] - 58 [ label = "crate num-traits 0.2.17" ] - 59 [ label = "crate once_cell 1.19.0" ] - 60 [ label = "crate pathdiff 0.2.1" ] - 61 [ label = "crate pest 2.7.6" ] - 62 [ label = "crate pest_derive 2.7.6" ] - 63 [ label = "crate pest_generator 2.7.6" ] - 64 [ label = "crate pest_meta 2.7.6" ] - 65 [ label = "crate petgraph 0.6.4" ] - 66 [ label = "crate ppv-lite86 0.2.17" ] - 67 [ label = "crate proc-macro2 1.0.76" ] - 68 [ label = "crate quote 1.0.35" ] - 69 [ label = "crate rand 0.8.5" ] - 70 [ label = "crate rand_chacha 0.3.1" ] - 71 [ label = "crate rand_core 0.6.4" ] - 72 [ label = "crate rawpointer 0.2.1" ] - 73 [ label = "crate ron 0.7.1" ] - 74 [ label = "crate ryu 1.0.16" ] - 75 [ label = "crate semver 1.0.22" ] - 76 [ label = "crate serde 1.0.195" ] - 77 [ label = "crate serde_derive 1.0.195" ] - 78 [ label = "crate serde_json 1.0.111" ] - 79 [ label = "crate serde_spanned 0.6.5" ] - 80 [ label = "crate sha2 0.10.8" ] - 81 [ label = "crate smallvec 1.13.2" ] - 82 [ label = "crate smol_str 0.2.1" ] - 83 [ label = "crate static_assertions 1.1.0" ] - 84 [ label = "crate sub-crate 0.1.0 path+file:///krates/tests/feature-bug/sub-crate" ] - 85 [ label = "crate syn 1.0.109" ] - 86 [ label = "crate syn 2.0.48" ] - 87 [ label = "crate tame-index 0.4.1" ] - 88 [ label = "crate thiserror 1.0.56" ] - 89 [ label = "crate thiserror-impl 1.0.56" ] - 90 [ label = "crate toml 0.5.11" ] - 91 [ label = "crate toml 0.7.8" ] - 92 [ label = "crate toml-span 0.5.1 git+https://github.com/EmbarkStudios/toml-span?rev=ee49a54" ] - 93 [ label = "crate toml_datetime 0.6.5" ] - 94 [ label = "crate toml_edit 0.19.15" ] - 95 [ label = "crate twox-hash 1.6.3" ] - 96 [ label = "crate typenum 1.17.0" ] - 97 [ label = "crate ucd-trie 0.1.6" ] - 98 [ label = "crate unicode-ident 1.0.12" ] - 99 [ label = "crate version_check 0.9.4" ] - 100 [ label = "crate wasi 0.11.0+wasi-snapshot-preview1" ] - 101 [ label = "crate windows-sys 0.52.0" ] - 102 [ label = "crate windows-targets 0.52.0" ] - 103 [ label = "crate windows_aarch64_gnullvm 0.52.0" ] - 104 [ label = "crate windows_aarch64_msvc 0.52.0" ] - 105 [ label = "crate windows_i686_gnu 0.52.0" ] - 106 [ label = "crate windows_i686_msvc 0.52.0" ] - 107 [ label = "crate windows_x86_64_gnu 0.52.0" ] - 108 [ label = "crate windows_x86_64_gnullvm 0.52.0" ] - 109 [ label = "crate windows_x86_64_msvc 0.52.0" ] - 110 [ label = "crate winnow 0.5.40" ] - 111 [ label = "crate yaml-rust 0.4.5" ] - 112 [ label = "feature default" ] - 113 [ label = "feature default" ] - 114 [ label = "feature full" ] - 115 [ label = "feature visit-mut" ] - 116 [ label = "feature default" ] - 117 [ label = "feature derive" ] + 0 [ label = "crate ahash 0.7.7" ] + 1 [ label = "crate approx 0.4.0" ] + 2 [ label = "crate arrayref 0.3.7" ] + 3 [ label = "crate async-trait 0.1.77" ] + 4 [ label = "crate autocfg 1.1.0" ] + 5 [ label = "crate base64 0.13.1" ] + 6 [ label = "crate bitflags 1.3.2" ] + 7 [ label = "crate block-buffer 0.10.4" ] + 8 [ label = "crate block-buffer 0.3.3" ] + 9 [ label = "crate byte-tools 0.2.0" ] + 10 [ label = "crate bytes 1.6.0" ] + 11 [ label = "crate camino 1.1.6" ] + 12 [ label = "crate cargo-platform 0.1.8" ] + 13 [ label = "crate cargo_metadata 0.15.4" ] + 14 [ label = "crate cargo_metadata 0.17.0" ] + 15 [ label = "crate cauchy 0.4.0" ] + 16 [ label = "crate cblas-sys 0.1.4" ] + 17 [ label = "crate cc 1.0.83" ] + 18 [ label = "crate cfg-expr 0.11.0" ] + 19 [ label = "crate cfg-expr 0.15.7" ] + 20 [ label = "crate cfg-if 1.0.0" ] + 21 [ label = "crate cmake 0.1.50" ] + 22 [ label = "crate config 0.13.4" ] + 23 [ label = "crate cpufeatures 0.2.12" ] + 24 [ label = "crate crypto-common 0.1.6" ] + 25 [ label = "crate digest 0.10.7" ] + 26 [ label = "crate digest 0.7.6" ] + 27 [ label = "crate dlv-list 0.3.0" ] + 28 [ label = "crate equivalent 1.0.1" ] + 29 [ label = "crate feature-bug 0.1.0 path+file:///krates/tests/feature-bug" ] + 30 [ label = "crate fixedbitset 0.4.2" ] + 31 [ label = "crate fnv 1.0.7" ] + 32 [ label = "crate generic-array 0.14.7" ] + 33 [ label = "crate generic-array 0.9.1" ] + 34 [ label = "crate getrandom 0.2.12" ] + 35 [ label = "crate hashbrown 0.12.3" ] + 36 [ label = "crate hashbrown 0.14.3" ] + 37 [ label = "crate home 0.5.9" ] + 38 [ label = "crate http 0.2.12" ] + 39 [ label = "crate indexmap 2.2.6" ] + 40 [ label = "crate itoa 1.0.10" ] + 41 [ label = "crate json5 0.4.1" ] + 42 [ label = "crate katexit 0.1.4" ] + 43 [ label = "crate krates 0.12.2 git+https://github.com/EmbarkStudios/krates?tag=0.12.2" ] + 44 [ label = "crate krates 0.14.1 git+https://github.com/EmbarkStudios/krates?tag=0.14.1" ] + 45 [ label = "crate lapack-sys 0.14.0" ] + 46 [ label = "crate lax 0.16.0" ] + 47 [ label = "crate lazy_static 1.4.0" ] + 48 [ label = "crate libc 0.2.152" ] + 49 [ label = "crate linked-hash-map 0.5.6" ] + 50 [ label = "crate matrixmultiply 0.3.8" ] + 51 [ label = "crate md-5 0.7.0" ] + 52 [ label = "crate md5 0.7.0" ] + 53 [ label = "crate memchr 2.7.1" ] + 54 [ label = "crate minimal-lexical 0.2.1" ] + 55 [ label = "crate ndarray 0.15.6" ] + 56 [ label = "crate ndarray-linalg 0.16.0" ] + 57 [ label = "crate netlib-src 0.8.0" ] + 58 [ label = "crate nom 7.1.3" ] + 59 [ label = "crate num-complex 0.4.4" ] + 60 [ label = "crate num-integer 0.1.45" ] + 61 [ label = "crate num-traits 0.2.17" ] + 62 [ label = "crate once_cell 1.19.0" ] + 63 [ label = "crate ordered-multimap 0.4.3" ] + 64 [ label = "crate pathdiff 0.2.1" ] + 65 [ label = "crate pest 2.7.6" ] + 66 [ label = "crate pest_derive 2.7.6" ] + 67 [ label = "crate pest_generator 2.7.6" ] + 68 [ label = "crate pest_meta 2.7.6" ] + 69 [ label = "crate petgraph 0.6.4" ] + 70 [ label = "crate ppv-lite86 0.2.17" ] + 71 [ label = "crate proc-macro2 1.0.76" ] + 72 [ label = "crate quote 1.0.35" ] + 73 [ label = "crate rand 0.8.5" ] + 74 [ label = "crate rand_chacha 0.3.1" ] + 75 [ label = "crate rand_core 0.6.4" ] + 76 [ label = "crate rawpointer 0.2.1" ] + 77 [ label = "crate ron 0.7.1" ] + 78 [ label = "crate rust-ini 0.18.0" ] + 79 [ label = "crate ryu 1.0.16" ] + 80 [ label = "crate semver 1.0.22" ] + 81 [ label = "crate serde 1.0.195" ] + 82 [ label = "crate serde_derive 1.0.195" ] + 83 [ label = "crate serde_json 1.0.111" ] + 84 [ label = "crate serde_spanned 0.6.5" ] + 85 [ label = "crate sha2 0.10.8" ] + 86 [ label = "crate smallvec 1.13.2" ] + 87 [ label = "crate smol_str 0.2.1" ] + 88 [ label = "crate static_assertions 1.1.0" ] + 89 [ label = "crate sub-crate 0.1.0 path+file:///krates/tests/feature-bug/sub-crate" ] + 90 [ label = "crate syn 1.0.109" ] + 91 [ label = "crate syn 2.0.48" ] + 92 [ label = "crate tame-index 0.4.1" ] + 93 [ label = "crate thiserror 1.0.56" ] + 94 [ label = "crate thiserror-impl 1.0.56" ] + 95 [ label = "crate toml 0.5.11" ] + 96 [ label = "crate toml 0.7.8" ] + 97 [ label = "crate toml-span 0.5.1 git+https://github.com/EmbarkStudios/toml-span?rev=ee49a54" ] + 98 [ label = "crate toml_datetime 0.6.5" ] + 99 [ label = "crate toml_edit 0.19.15" ] + 100 [ label = "crate twox-hash 1.6.3" ] + 101 [ label = "crate typenum 1.17.0" ] + 102 [ label = "crate ucd-trie 0.1.6" ] + 103 [ label = "crate unicode-ident 1.0.12" ] + 104 [ label = "crate version_check 0.9.4" ] + 105 [ label = "crate wasi 0.11.0+wasi-snapshot-preview1" ] + 106 [ label = "crate windows-sys 0.52.0" ] + 107 [ label = "crate windows-targets 0.52.0" ] + 108 [ label = "crate windows_aarch64_gnullvm 0.52.0" ] + 109 [ label = "crate windows_aarch64_msvc 0.52.0" ] + 110 [ label = "crate windows_i686_gnu 0.52.0" ] + 111 [ label = "crate windows_i686_msvc 0.52.0" ] + 112 [ label = "crate windows_x86_64_gnu 0.52.0" ] + 113 [ label = "crate windows_x86_64_gnullvm 0.52.0" ] + 114 [ label = "crate windows_x86_64_msvc 0.52.0" ] + 115 [ label = "crate winnow 0.5.40" ] + 116 [ label = "crate yaml-rust 0.4.5" ] + 117 [ label = "feature alloc" ] 118 [ label = "feature default" ] - 119 [ label = "feature serde1" ] - 120 [ label = "feature serde" ] - 121 [ label = "feature default" ] - 122 [ label = "feature unbounded_depth" ] - 123 [ label = "feature default" ] - 124 [ label = "feature serde" ] - 125 [ label = "feature rand" ] - 126 [ label = "feature default" ] + 119 [ label = "feature default" ] + 120 [ label = "feature full" ] + 121 [ label = "feature visit-mut" ] + 122 [ label = "feature default" ] + 123 [ label = "feature derive" ] + 124 [ label = "feature default" ] + 125 [ label = "feature serde1" ] + 126 [ label = "feature serde" ] 127 [ label = "feature default" ] - 128 [ label = "feature default" ] + 128 [ label = "feature unbounded_depth" ] 129 [ label = "feature default" ] - 130 [ label = "feature default" ] - 131 [ label = "feature default" ] - 132 [ label = "feature more_lengths" ] - 133 [ label = "feature prefer-index" ] + 130 [ label = "feature serde" ] + 131 [ label = "feature rand" ] + 132 [ label = "feature default" ] + 133 [ label = "feature default" ] 134 [ label = "feature default" ] - 135 [ label = "feature simple" ] - 136 [ label = "feature Win32_Foundation" ] - 137 [ label = "feature Win32_UI_Shell" ] - 138 [ label = "feature Win32_System_Com" ] - 139 [ label = "feature default" ] - 140 [ label = "feature default" ] + 135 [ label = "feature default" ] + 136 [ label = "feature default" ] + 137 [ label = "feature default" ] + 138 [ label = "feature default" ] + 139 [ label = "feature more_lengths" ] + 140 [ label = "feature prefer-index" ] 141 [ label = "feature default" ] - 142 [ label = "feature raw" ] - 143 [ label = "feature default" ] - 144 [ label = "feature default" ] - 145 [ label = "feature full" ] - 146 [ label = "feature extra-traits" ] + 142 [ label = "feature simple" ] + 143 [ label = "feature Win32_Foundation" ] + 144 [ label = "feature Win32_UI_Shell" ] + 145 [ label = "feature Win32_System_Com" ] + 146 [ label = "feature default" ] 147 [ label = "feature default" ] 148 [ label = "feature default" ] - 149 [ label = "feature default" ] + 149 [ label = "feature raw" ] 150 [ label = "feature default" ] 151 [ label = "feature default" ] - 152 [ label = "feature default" ] - 153 [ label = "feature cblas" ] - 154 [ label = "feature static" ] - 155 [ label = "feature cgemm" ] - 156 [ label = "feature std" ] - 157 [ label = "feature std" ] - 158 [ label = "feature netlib" ] - 159 [ label = "feature blas" ] - 160 [ label = "feature approx" ] - 161 [ label = "feature std" ] - 162 [ label = "feature std" ] + 152 [ label = "feature full" ] + 153 [ label = "feature extra-traits" ] + 154 [ label = "feature default" ] + 155 [ label = "feature default" ] + 156 [ label = "feature default" ] + 157 [ label = "feature default" ] + 158 [ label = "feature default" ] + 159 [ label = "feature default" ] + 160 [ label = "feature cblas" ] + 161 [ label = "feature static" ] + 162 [ label = "feature cgemm" ] 163 [ label = "feature std" ] - 164 [ label = "feature i128" ] - 165 [ label = "feature default" ] - 166 [ label = "feature std" ] - 167 [ label = "feature std" ] + 164 [ label = "feature std" ] + 165 [ label = "feature netlib" ] + 166 [ label = "feature blas" ] + 167 [ label = "feature approx" ] 168 [ label = "feature std" ] - 169 [ label = "feature default" ] - 170 [ label = "feature default" ] - 171 [ label = "feature default" ] - 172 [ label = "feature proc-macro" ] - 173 [ label = "feature std" ] - 174 [ label = "feature alloc" ] - 175 [ label = "feature getrandom" ] + 169 [ label = "feature std" ] + 170 [ label = "feature std" ] + 171 [ label = "feature i128" ] + 172 [ label = "feature default" ] + 173 [ label = "feature default" ] + 174 [ label = "feature std" ] + 175 [ label = "feature std" ] 176 [ label = "feature std" ] - 177 [ label = "feature simd" ] - 178 [ label = "feature std" ] - 179 [ label = "feature std" ] - 180 [ label = "feature default" ] - 181 [ label = "feature default" ] - 182 [ label = "feature serde_derive" ] - 183 [ label = "feature default" ] + 177 [ label = "feature default" ] + 178 [ label = "feature default" ] + 179 [ label = "feature default" ] + 180 [ label = "feature proc-macro" ] + 181 [ label = "feature std" ] + 182 [ label = "feature alloc" ] + 183 [ label = "feature getrandom" ] 184 [ label = "feature std" ] - 185 [ label = "feature default" ] - 186 [ label = "feature default" ] - 187 [ label = "feature netlib" ] + 185 [ label = "feature simd" ] + 186 [ label = "feature std" ] + 187 [ label = "feature std" ] 188 [ label = "feature default" ] - 189 [ label = "feature proc-macro" ] - 190 [ label = "feature rc" ] - 191 [ label = "feature serde" ] - 192 [ label = "feature default" ] + 189 [ label = "feature default" ] + 190 [ label = "feature serde_derive" ] + 191 [ label = "feature default" ] + 192 [ label = "feature std" ] 193 [ label = "feature default" ] - 194 [ label = "feature serde" ] - 195 [ label = "feature serde" ] - 196 [ label = "feature serde" ] - 197 [ label = "feature default" ] - 198 [ label = "feature std" ] - 199 [ label = "feature default" ] - 200 [ label = "feature std" ] - 201 [ label = "feature std" ] + 194 [ label = "feature default" ] + 195 [ label = "feature netlib" ] + 196 [ label = "feature default" ] + 197 [ label = "feature proc-macro" ] + 198 [ label = "feature rc" ] + 199 [ label = "feature serde" ] + 200 [ label = "feature default" ] + 201 [ label = "feature default" ] 202 [ label = "feature serde" ] - 203 [ label = "feature yaml-rust" ] - 204 [ label = "feature yaml" ] - 205 [ label = "feature toml" ] - 206 [ label = "feature serde_json" ] - 207 [ label = "feature rust-ini" ] - 208 [ label = "feature ron" ] - 209 [ label = "feature json5_rs" ] - 210 [ label = "feature json5_rs" ] - 211 [ label = "feature json5" ] - 212 [ label = "feature json" ] - 213 [ label = "feature ini" ] - 214 [ label = "feature core-api" ] - 215 [ label = "feature block-buffer" ] - 216 [ label = "feature std" ] - 217 [ label = "feature netlib-static" ] - 218 [ label = "feature std" ] - 219 [ label = "feature std" ] - 220 [ label = "feature alloc" ] - 221 [ label = "feature libc" ] - 222 [ label = "feature cblas-sys" ] - 223 [ label = "feature std" ] - 224 [ label = "feature alloc" ] - 225 [ label = "feature std" ] - 226 [ label = "feature std" ] - 227 [ label = "feature alloc" ] - 228 [ label = "feature race" ] - 229 [ label = "feature memchr" ] - 230 [ label = "feature std" ] - 231 [ label = "feature stable_graph" ] - 232 [ label = "feature matrix_graph" ] - 233 [ label = "feature graphmap" ] - 234 [ label = "feature std_rng" ] - 235 [ label = "feature rand_chacha" ] + 203 [ label = "feature serde" ] + 204 [ label = "feature serde" ] + 205 [ label = "feature default" ] + 206 [ label = "feature std" ] + 207 [ label = "feature default" ] + 208 [ label = "feature std" ] + 209 [ label = "feature std" ] + 210 [ label = "feature serde" ] + 211 [ label = "feature yaml-rust" ] + 212 [ label = "feature yaml" ] + 213 [ label = "feature toml" ] + 214 [ label = "feature serde_json" ] + 215 [ label = "feature rust-ini" ] + 216 [ label = "feature ron" ] + 217 [ label = "feature json5_rs" ] + 218 [ label = "feature json5_rs" ] + 219 [ label = "feature json5" ] + 220 [ label = "feature json" ] + 221 [ label = "feature ini" ] + 222 [ label = "feature core-api" ] + 223 [ label = "feature block-buffer" ] + 224 [ label = "feature std" ] + 225 [ label = "feature inline-more" ] + 226 [ label = "feature ahash" ] + 227 [ label = "feature netlib-static" ] + 228 [ label = "feature std" ] + 229 [ label = "feature std" ] + 230 [ label = "feature alloc" ] + 231 [ label = "feature libc" ] + 232 [ label = "feature cblas-sys" ] + 233 [ label = "feature std" ] + 234 [ label = "feature alloc" ] + 235 [ label = "feature std" ] 236 [ label = "feature std" ] - 237 [ label = "feature alloc" ] - 238 [ label = "feature getrandom" ] - 239 [ label = "feature libc" ] - 240 [ label = "feature std" ] - 241 [ label = "feature std" ] - 242 [ label = "feature std" ] - 243 [ label = "feature quote" ] - 244 [ label = "feature proc-macro" ] - 245 [ label = "feature printing" ] - 246 [ label = "feature parsing" ] - 247 [ label = "feature derive" ] - 248 [ label = "feature clone-impls" ] - 249 [ label = "feature quote" ] - 250 [ label = "feature proc-macro" ] - 251 [ label = "feature printing" ] - 252 [ label = "feature parsing" ] - 253 [ label = "feature derive" ] - 254 [ label = "feature clone-impls" ] - 255 [ label = "feature parse" ] - 256 [ label = "feature display" ] - 257 [ label = "feature Win32_UI" ] - 258 [ label = "feature Win32" ] - 259 [ label = "feature Win32_System" ] - 260 [ label = "feature std" ] - 261 [ label = "feature alloc" ] - 0 -> 58 [ label = "" ] - 2 -> 112 [ label = "" ] - 2 -> 113 [ label = "" ] - 2 -> 114 [ label = "" ] - 2 -> 115 [ label = "" ] - 2 -> 116 [ label = "" ] - 6 -> 30 [ label = "" ] - 7 -> 1 [ label = "" ] - 7 -> 8 [ label = "" ] - 10 -> 117 [ label = "" ] - 10 -> 118 [ label = "" ] - 11 -> 118 [ label = "" ] - 12 -> 119 [ label = "" ] - 12 -> 11 [ label = "" ] - 12 -> 120 [ label = "" ] - 12 -> 121 [ label = "" ] - 12 -> 117 [ label = "" ] - 12 -> 118 [ label = "" ] - 12 -> 122 [ label = "" ] - 12 -> 123 [ label = "" ] - 12 -> 88 [ label = "" ] - 13 -> 119 [ label = "" ] - 13 -> 11 [ label = "" ] - 13 -> 120 [ label = "" ] - 13 -> 121 [ label = "" ] - 13 -> 117 [ label = "" ] - 13 -> 118 [ label = "" ] - 13 -> 122 [ label = "" ] + 237 [ label = "feature race" ] + 238 [ label = "feature memchr" ] + 239 [ label = "feature std" ] + 240 [ label = "feature stable_graph" ] + 241 [ label = "feature matrix_graph" ] + 242 [ label = "feature graphmap" ] + 243 [ label = "feature std_rng" ] + 244 [ label = "feature rand_chacha" ] + 245 [ label = "feature std" ] + 246 [ label = "feature alloc" ] + 247 [ label = "feature getrandom" ] + 248 [ label = "feature libc" ] + 249 [ label = "feature std" ] + 250 [ label = "feature std" ] + 251 [ label = "feature std" ] + 252 [ label = "feature quote" ] + 253 [ label = "feature proc-macro" ] + 254 [ label = "feature printing" ] + 255 [ label = "feature parsing" ] + 256 [ label = "feature derive" ] + 257 [ label = "feature clone-impls" ] + 258 [ label = "feature quote" ] + 259 [ label = "feature proc-macro" ] + 260 [ label = "feature printing" ] + 261 [ label = "feature parsing" ] + 262 [ label = "feature derive" ] + 263 [ label = "feature clone-impls" ] + 264 [ label = "feature parse" ] + 265 [ label = "feature display" ] + 266 [ label = "feature Win32_UI" ] + 267 [ label = "feature Win32" ] + 268 [ label = "feature Win32_System" ] + 269 [ label = "feature std" ] + 270 [ label = "feature alloc" ] + 0 -> 34 [ label = " 'cfg(any(target_os = \"linux\", target_os = \"android\", target_os = \"windows\", target_os = \"macos\", target_os = \"ios\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\", target_os = \"dragonfly\", target_os = \"solaris\", target_os = \"illumos\", target_os = \"fuchsia\", target_os = \"redox\", target_os = \"cloudabi\", target_os = \"haiku\", target_os = \"vxworks\", target_os = \"emscripten\", target_os = \"wasi\"))'" ] + 0 -> 117 [ label = " 'cfg(not(all(target_arch = \"arm\", target_os = \"none\")))'" ] + 0 -> 104 [ label = "(build)" ] + 1 -> 61 [ label = "" ] + 3 -> 118 [ label = "" ] + 3 -> 119 [ label = "" ] + 3 -> 120 [ label = "" ] + 3 -> 121 [ label = "" ] + 3 -> 122 [ label = "" ] + 7 -> 32 [ label = "" ] + 8 -> 2 [ label = "" ] + 8 -> 9 [ label = "" ] + 11 -> 123 [ label = "" ] + 11 -> 124 [ label = "" ] + 12 -> 124 [ label = "" ] + 13 -> 125 [ label = "" ] + 13 -> 12 [ label = "" ] + 13 -> 126 [ label = "" ] + 13 -> 127 [ label = "" ] 13 -> 123 [ label = "" ] - 13 -> 88 [ label = "" ] - 14 -> 124 [ label = "" ] + 13 -> 124 [ label = "" ] + 13 -> 128 [ label = "" ] + 13 -> 129 [ label = "" ] + 13 -> 93 [ label = "" ] 14 -> 125 [ label = "" ] + 14 -> 12 [ label = "" ] 14 -> 126 [ label = "" ] 14 -> 127 [ label = "" ] + 14 -> 123 [ label = "" ] + 14 -> 124 [ label = "" ] 14 -> 128 [ label = "" ] - 14 -> 118 [ label = "" ] - 15 -> 129 [ label = "" ] - 16 -> 45 [ label = " 'cfg(unix)'" ] - 17 -> 81 [ label = "" ] - 18 -> 81 [ label = "" ] - 20 -> 16 [ label = "" ] - 21 -> 2 [ label = "" ] - 21 -> 38 [ label = "" ] - 21 -> 44 [ label = "" ] - 21 -> 130 [ label = "" ] - 21 -> 60 [ label = "" ] - 21 -> 73 [ label = "" ] - 21 -> 118 [ label = "" ] - 21 -> 123 [ label = "" ] - 21 -> 131 [ label = "" ] - 21 -> 111 [ label = "" ] - 22 -> 129 [ label = " 'aarch64-linux-android'" ] - 22 -> 129 [ label = " 'cfg(all(target_arch = \"aarch64\", target_os = \"linux\"))'" ] - 22 -> 129 [ label = " 'cfg(all(target_arch = \"aarch64\", target_vendor = \"apple\"))'" ] - 22 -> 129 [ label = " 'cfg(all(target_arch = \"loongarch64\", target_os = \"linux\"))'" ] - 23 -> 132 [ label = "" ] - 23 -> 96 [ label = "" ] - 24 -> 6 [ label = "" ] - 24 -> 23 [ label = "" ] - 25 -> 31 [ label = "" ] - 27 -> 40 [ label = "" ] - 27 -> 133 [ label = "" ] - 27 -> 48 [ label = "" ] - 27 -> 134 [ label = "" ] - 27 -> 135 [ label = "" ] - 27 -> 92 [ label = "" ] - 30 -> 96 [ label = "" ] - 30 -> 99 [ label = "(build)" ] - 31 -> 96 [ label = "" ] - 32 -> 19 [ label = "" ] - 32 -> 45 [ label = " 'cfg(unix)'" ] - 32 -> 100 [ label = " 'cfg(target_os = \"wasi\")'" ] - 34 -> 136 [ label = " 'cfg(windows)'" ] - 34 -> 137 [ label = " 'cfg(windows)'" ] - 34 -> 138 [ label = " 'cfg(windows)'" ] - 34 -> 139 [ label = " 'cfg(windows)'" ] - 35 -> 140 [ label = "" ] - 35 -> 141 [ label = "" ] - 35 -> 37 [ label = "" ] - 36 -> 26 [ label = "" ] - 36 -> 142 [ label = "" ] - 38 -> 143 [ label = "" ] - 38 -> 144 [ label = "" ] - 38 -> 118 [ label = "" ] - 39 -> 112 [ label = "" ] - 39 -> 113 [ label = "" ] - 39 -> 145 [ label = "" ] - 39 -> 146 [ label = "" ] - 39 -> 147 [ label = "" ] - 40 -> 148 [ label = "" ] - 40 -> 149 [ label = "" ] - 40 -> 150 [ label = "" ] - 40 -> 121 [ label = "" ] - 41 -> 151 [ label = "" ] - 41 -> 152 [ label = "" ] + 14 -> 129 [ label = "" ] + 14 -> 93 [ label = "" ] + 15 -> 130 [ label = "" ] + 15 -> 131 [ label = "" ] + 15 -> 132 [ label = "" ] + 15 -> 133 [ label = "" ] + 15 -> 134 [ label = "" ] + 15 -> 124 [ label = "" ] + 16 -> 135 [ label = "" ] + 17 -> 48 [ label = " 'cfg(unix)'" ] + 18 -> 86 [ label = "" ] + 19 -> 86 [ label = "" ] + 21 -> 17 [ label = "" ] + 22 -> 3 [ label = "" ] + 22 -> 41 [ label = "" ] + 22 -> 47 [ label = "" ] + 22 -> 136 [ label = "" ] + 22 -> 64 [ label = "" ] + 22 -> 77 [ label = "" ] + 22 -> 137 [ label = "" ] + 22 -> 124 [ label = "" ] + 22 -> 129 [ label = "" ] + 22 -> 138 [ label = "" ] + 22 -> 116 [ label = "" ] + 23 -> 135 [ label = " 'aarch64-linux-android'" ] + 23 -> 135 [ label = " 'cfg(all(target_arch = \"aarch64\", target_os = \"linux\"))'" ] + 23 -> 135 [ label = " 'cfg(all(target_arch = \"aarch64\", target_vendor = \"apple\"))'" ] + 23 -> 135 [ label = " 'cfg(all(target_arch = \"loongarch64\", target_os = \"linux\"))'" ] + 24 -> 139 [ label = "" ] + 24 -> 101 [ label = "" ] + 25 -> 7 [ label = "" ] + 25 -> 24 [ label = "" ] + 26 -> 33 [ label = "" ] + 29 -> 43 [ label = "" ] + 29 -> 140 [ label = "" ] + 29 -> 51 [ label = "" ] + 29 -> 141 [ label = "" ] + 29 -> 142 [ label = "" ] + 29 -> 97 [ label = "" ] + 32 -> 101 [ label = "" ] + 32 -> 104 [ label = "(build)" ] + 33 -> 101 [ label = "" ] + 34 -> 20 [ label = "" ] + 34 -> 48 [ label = " 'cfg(unix)'" ] + 34 -> 105 [ label = " 'cfg(target_os = \"wasi\")'" ] + 35 -> 0 [ label = "" ] + 37 -> 143 [ label = " 'cfg(windows)'" ] + 37 -> 144 [ label = " 'cfg(windows)'" ] + 37 -> 145 [ label = " 'cfg(windows)'" ] + 37 -> 146 [ label = " 'cfg(windows)'" ] + 38 -> 147 [ label = "" ] + 38 -> 148 [ label = "" ] + 38 -> 40 [ label = "" ] + 39 -> 28 [ label = "" ] + 39 -> 149 [ label = "" ] 41 -> 150 [ label = "" ] - 41 -> 121 [ label = "" ] - 41 -> 87 [ label = "" ] - 42 -> 129 [ label = "" ] - 43 -> 14 [ label = "" ] - 43 -> 39 [ label = "" ] - 43 -> 42 [ label = "" ] - 43 -> 153 [ label = "" ] - 43 -> 154 [ label = "" ] + 41 -> 151 [ label = "" ] + 41 -> 124 [ label = "" ] + 42 -> 118 [ label = "" ] + 42 -> 119 [ label = "" ] + 42 -> 152 [ label = "" ] + 42 -> 153 [ label = "" ] + 42 -> 154 [ label = "" ] + 43 -> 155 [ label = "" ] + 43 -> 156 [ label = "" ] + 43 -> 157 [ label = "" ] 43 -> 127 [ label = "" ] - 43 -> 88 [ label = "" ] - 47 -> 3 [ label = "(build)" ] - 47 -> 72 [ label = "" ] - 48 -> 7 [ label = "" ] - 48 -> 8 [ label = "" ] - 48 -> 25 [ label = "" ] - 52 -> 0 [ label = "" ] - 52 -> 15 [ label = "" ] - 52 -> 129 [ label = "" ] - 52 -> 155 [ label = "" ] - 52 -> 156 [ label = "" ] - 52 -> 56 [ label = "" ] - 52 -> 57 [ label = "" ] - 52 -> 58 [ label = "" ] - 52 -> 157 [ label = "" ] - 52 -> 72 [ label = "" ] - 53 -> 14 [ label = "" ] - 53 -> 39 [ label = "" ] - 53 -> 43 [ label = "" ] - 53 -> 158 [ label = "" ] - 53 -> 159 [ label = "" ] - 53 -> 160 [ label = "" ] - 53 -> 161 [ label = "" ] - 53 -> 126 [ label = "" ] - 53 -> 127 [ label = "" ] - 53 -> 128 [ label = "" ] - 53 -> 88 [ label = "" ] - 54 -> 20 [ label = "(build)" ] - 55 -> 50 [ label = "" ] + 44 -> 158 [ label = "" ] + 44 -> 159 [ label = "" ] + 44 -> 157 [ label = "" ] + 44 -> 127 [ label = "" ] + 44 -> 92 [ label = "" ] + 45 -> 135 [ label = "" ] + 46 -> 15 [ label = "" ] + 46 -> 42 [ label = "" ] + 46 -> 45 [ label = "" ] + 46 -> 160 [ label = "" ] + 46 -> 161 [ label = "" ] + 46 -> 133 [ label = "" ] + 46 -> 93 [ label = "" ] + 50 -> 4 [ label = "(build)" ] + 50 -> 76 [ label = "" ] + 51 -> 8 [ label = "" ] + 51 -> 9 [ label = "" ] + 51 -> 26 [ label = "" ] + 55 -> 1 [ label = "" ] + 55 -> 16 [ label = "" ] + 55 -> 135 [ label = "" ] 55 -> 162 [ label = "" ] - 55 -> 51 [ label = "" ] 55 -> 163 [ label = "" ] - 56 -> 164 [ label = "" ] - 56 -> 157 [ label = "" ] - 56 -> 69 [ label = "" ] - 56 -> 76 [ label = "" ] - 57 -> 3 [ label = "(build)" ] - 57 -> 58 [ label = "" ] - 58 -> 3 [ label = "(build)" ] - 61 -> 165 [ label = "" ] - 61 -> 88 [ label = "" ] - 61 -> 97 [ label = "" ] - 61 -> 166 [ label = "" ] - 62 -> 61 [ label = "" ] - 62 -> 167 [ label = "" ] - 62 -> 63 [ label = "" ] - 62 -> 168 [ label = "" ] - 63 -> 61 [ label = "" ] - 63 -> 167 [ label = "" ] - 63 -> 169 [ label = "" ] - 63 -> 112 [ label = "" ] - 63 -> 113 [ label = "" ] - 63 -> 116 [ label = "" ] - 64 -> 170 [ label = "" ] - 64 -> 143 [ label = "" ] - 64 -> 80 [ label = "(build)" ] - 65 -> 28 [ label = "" ] - 65 -> 171 [ label = "" ] - 67 -> 98 [ label = "" ] - 68 -> 67 [ label = "" ] - 68 -> 172 [ label = "" ] - 69 -> 45 [ label = " 'cfg(unix)'" ] - 69 -> 70 [ label = "" ] - 69 -> 173 [ label = "" ] - 69 -> 71 [ label = "" ] - 69 -> 174 [ label = "" ] - 69 -> 175 [ label = "" ] - 69 -> 176 [ label = "" ] - 70 -> 177 [ label = "" ] - 70 -> 178 [ label = "" ] - 70 -> 71 [ label = "" ] - 71 -> 32 [ label = "" ] - 71 -> 179 [ label = "" ] - 73 -> 180 [ label = "" ] + 55 -> 59 [ label = "" ] + 55 -> 60 [ label = "" ] + 55 -> 61 [ label = "" ] + 55 -> 164 [ label = "" ] + 55 -> 76 [ label = "" ] + 56 -> 15 [ label = "" ] + 56 -> 42 [ label = "" ] + 56 -> 46 [ label = "" ] + 56 -> 165 [ label = "" ] + 56 -> 166 [ label = "" ] + 56 -> 167 [ label = "" ] + 56 -> 168 [ label = "" ] + 56 -> 132 [ label = "" ] + 56 -> 133 [ label = "" ] + 56 -> 134 [ label = "" ] + 56 -> 93 [ label = "" ] + 57 -> 21 [ label = "(build)" ] + 58 -> 53 [ label = "" ] + 58 -> 169 [ label = "" ] + 58 -> 54 [ label = "" ] + 58 -> 170 [ label = "" ] + 59 -> 171 [ label = "" ] + 59 -> 164 [ label = "" ] + 59 -> 73 [ label = "" ] + 59 -> 81 [ label = "" ] + 60 -> 4 [ label = "(build)" ] + 60 -> 61 [ label = "" ] + 61 -> 4 [ label = "(build)" ] + 63 -> 27 [ label = "" ] + 63 -> 172 [ label = "" ] + 65 -> 173 [ label = "" ] + 65 -> 93 [ label = "" ] + 65 -> 102 [ label = "" ] + 65 -> 174 [ label = "" ] + 66 -> 65 [ label = "" ] + 66 -> 175 [ label = "" ] + 66 -> 67 [ label = "" ] + 66 -> 176 [ label = "" ] + 67 -> 65 [ label = "" ] + 67 -> 175 [ label = "" ] + 67 -> 177 [ label = "" ] + 67 -> 118 [ label = "" ] + 67 -> 119 [ label = "" ] + 67 -> 122 [ label = "" ] + 68 -> 178 [ label = "" ] + 68 -> 150 [ label = "" ] + 68 -> 85 [ label = "(build)" ] + 69 -> 30 [ label = "" ] + 69 -> 179 [ label = "" ] + 71 -> 103 [ label = "" ] + 72 -> 71 [ label = "" ] + 72 -> 180 [ label = "" ] + 73 -> 48 [ label = " 'cfg(unix)'" ] + 73 -> 74 [ label = "" ] 73 -> 181 [ label = "" ] + 73 -> 75 [ label = "" ] 73 -> 182 [ label = "" ] - 73 -> 118 [ label = "" ] - 75 -> 76 [ label = "" ] - 76 -> 183 [ label = "" ] - 77 -> 112 [ label = "" ] - 77 -> 113 [ label = "" ] - 77 -> 116 [ label = "" ] - 78 -> 37 [ label = "" ] - 78 -> 74 [ label = "" ] - 78 -> 76 [ label = "" ] - 78 -> 184 [ label = "" ] - 79 -> 118 [ label = "" ] - 80 -> 19 [ label = "" ] - 80 -> 22 [ label = " 'cfg(any(target_arch = \"aarch64\", target_arch = \"x86_64\", target_arch = \"x86\"))'" ] - 80 -> 185 [ label = "" ] - 82 -> 76 [ label = "" ] - 82 -> 184 [ label = "" ] - 84 -> 186 [ label = "" ] - 84 -> 187 [ label = " 'cfg(target_os = \"linux\")'" ] - 84 -> 188 [ label = " 'cfg(target_os = \"linux\")'" ] - 84 -> 188 [ label = " 'cfg(target_os = \"windows\")'" ] - 85 -> 67 [ label = "" ] - 85 -> 172 [ label = "" ] - 85 -> 68 [ label = "" ] - 85 -> 189 [ label = "" ] - 85 -> 98 [ label = "" ] - 86 -> 67 [ label = "" ] - 86 -> 172 [ label = "" ] - 86 -> 68 [ label = "" ] - 86 -> 189 [ label = "" ] - 86 -> 98 [ label = "" ] - 87 -> 10 [ label = "" ] - 87 -> 34 [ label = "" ] - 87 -> 35 [ label = "" ] - 87 -> 165 [ label = "" ] - 87 -> 120 [ label = "" ] - 87 -> 121 [ label = "" ] - 87 -> 117 [ label = "" ] - 87 -> 190 [ label = "" ] - 87 -> 118 [ label = "" ] - 87 -> 123 [ label = "" ] - 87 -> 191 [ label = "" ] + 73 -> 183 [ label = "" ] + 73 -> 184 [ label = "" ] + 74 -> 185 [ label = "" ] + 74 -> 186 [ label = "" ] + 74 -> 75 [ label = "" ] + 75 -> 34 [ label = "" ] + 75 -> 187 [ label = "" ] + 77 -> 188 [ label = "" ] + 77 -> 189 [ label = "" ] + 77 -> 190 [ label = "" ] + 77 -> 124 [ label = "" ] + 78 -> 20 [ label = "" ] + 78 -> 63 [ label = "" ] + 80 -> 81 [ label = "" ] + 81 -> 191 [ label = "" ] + 82 -> 118 [ label = "" ] + 82 -> 119 [ label = "" ] + 82 -> 122 [ label = "" ] + 83 -> 40 [ label = "" ] + 83 -> 79 [ label = "" ] + 83 -> 81 [ label = "" ] + 83 -> 192 [ label = "" ] + 84 -> 124 [ label = "" ] + 85 -> 20 [ label = "" ] + 85 -> 23 [ label = " 'cfg(any(target_arch = \"aarch64\", target_arch = \"x86_64\", target_arch = \"x86\"))'" ] + 85 -> 193 [ label = "" ] + 87 -> 81 [ label = "" ] 87 -> 192 [ label = "" ] - 87 -> 88 [ label = "" ] - 87 -> 193 [ label = "" ] - 87 -> 95 [ label = "" ] - 88 -> 89 [ label = "" ] - 89 -> 112 [ label = "" ] - 89 -> 113 [ label = "" ] - 89 -> 116 [ label = "" ] - 90 -> 118 [ label = "" ] - 91 -> 118 [ label = "" ] - 91 -> 194 [ label = "" ] - 91 -> 195 [ label = "" ] - 91 -> 196 [ label = "" ] + 89 -> 194 [ label = "" ] + 89 -> 195 [ label = " 'cfg(target_os = \"linux\")'" ] + 89 -> 196 [ label = " 'cfg(target_os = \"linux\")'" ] + 89 -> 196 [ label = " 'cfg(target_os = \"windows\")'" ] + 90 -> 71 [ label = "" ] + 90 -> 180 [ label = "" ] + 90 -> 72 [ label = "" ] + 90 -> 197 [ label = "" ] + 90 -> 103 [ label = "" ] + 91 -> 71 [ label = "" ] + 91 -> 180 [ label = "" ] + 91 -> 72 [ label = "" ] 91 -> 197 [ label = "" ] - 92 -> 81 [ label = "" ] - 93 -> 118 [ label = "" ] - 94 -> 198 [ label = "" ] - 94 -> 171 [ label = "" ] + 91 -> 103 [ label = "" ] + 92 -> 11 [ label = "" ] + 92 -> 37 [ label = "" ] + 92 -> 38 [ label = "" ] + 92 -> 173 [ label = "" ] + 92 -> 126 [ label = "" ] + 92 -> 127 [ label = "" ] + 92 -> 123 [ label = "" ] + 92 -> 198 [ label = "" ] + 92 -> 124 [ label = "" ] + 92 -> 129 [ label = "" ] + 92 -> 199 [ label = "" ] + 92 -> 200 [ label = "" ] + 92 -> 93 [ label = "" ] + 92 -> 201 [ label = "" ] + 92 -> 100 [ label = "" ] + 93 -> 94 [ label = "" ] 94 -> 118 [ label = "" ] - 94 -> 194 [ label = "" ] - 94 -> 93 [ label = "" ] - 94 -> 195 [ label = "" ] - 94 -> 199 [ label = "" ] - 95 -> 19 [ label = "" ] - 95 -> 83 [ label = "" ] - 101 -> 102 [ label = "" ] - 102 -> 103 [ label = " 'aarch64-pc-windows-gnullvm'" ] - 102 -> 104 [ label = " 'cfg(all(target_arch = \"aarch64\", target_env = \"msvc\", not(windows_raw_dylib)))'" ] - 102 -> 105 [ label = " 'cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(windows_raw_dylib)))'" ] - 102 -> 106 [ label = " 'cfg(all(target_arch = \"x86\", target_env = \"msvc\", not(windows_raw_dylib)))'" ] - 102 -> 107 [ label = " 'cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))'" ] - 102 -> 108 [ label = " 'x86_64-pc-windows-gnullvm'" ] - 102 -> 109 [ label = " 'cfg(all(target_arch = \"x86_64\", target_env = \"msvc\", not(windows_raw_dylib)))'" ] - 111 -> 46 [ label = "" ] - 200 -> 4 [ label = "" ] - 180 -> 4 [ label = "" ] - 180 -> 200 [ label = "" ] - 181 -> 5 [ label = "" ] - 201 -> 9 [ label = "" ] - 140 -> 9 [ label = "" ] - 140 -> 201 [ label = "" ] - 119 -> 10 [ label = "" ] - 119 -> 202 [ label = "" ] - 202 -> 10 [ label = "" ] - 202 -> 76 [ label = "" ] - 148 -> 12 [ label = "" ] - 151 -> 13 [ label = "" ] - 149 -> 17 [ label = "" ] - 152 -> 18 [ label = "" ] - 203 -> 21 [ label = "" ] - 203 -> 111 [ label = "" ] - 204 -> 21 [ label = "" ] - 204 -> 203 [ label = "" ] - 205 -> 21 [ label = "" ] - 205 -> 90 [ label = "" ] - 206 -> 21 [ label = "" ] - 206 -> 78 [ label = "" ] - 207 -> 21 [ label = "" ] - 208 -> 21 [ label = "" ] - 208 -> 73 [ label = "" ] - 209 -> 21 [ label = "" ] - 209 -> 210 [ label = "" ] - 211 -> 21 [ label = "" ] - 211 -> 209 [ label = "" ] - 212 -> 21 [ label = "" ] - 212 -> 206 [ label = "" ] - 213 -> 21 [ label = "" ] - 213 -> 207 [ label = "" ] - 186 -> 21 [ label = "" ] - 186 -> 205 [ label = "" ] - 186 -> 212 [ label = "" ] - 186 -> 204 [ label = "" ] - 186 -> 213 [ label = "" ] - 186 -> 208 [ label = "" ] - 186 -> 211 [ label = "" ] - 185 -> 24 [ label = "" ] - 185 -> 214 [ label = "" ] - 214 -> 24 [ label = "" ] - 214 -> 215 [ label = "" ] - 215 -> 24 [ label = "" ] - 215 -> 6 [ label = "" ] - 216 -> 29 [ label = "" ] - 141 -> 29 [ label = "" ] - 141 -> 216 [ label = "" ] - 132 -> 30 [ label = "" ] - 179 -> 32 [ label = "" ] - 142 -> 33 [ label = "" ] - 198 -> 36 [ label = "" ] - 171 -> 36 [ label = "" ] - 171 -> 198 [ label = "" ] - 133 -> 41 [ label = "" ] - 133 -> 87 [ label = "" ] - 217 -> 43 [ label = "" ] - 217 -> 154 [ label = "" ] - 158 -> 43 [ label = "" ] - 158 -> 217 [ label = "" ] - 218 -> 45 [ label = "" ] - 129 -> 45 [ label = "" ] - 129 -> 218 [ label = "" ] - 156 -> 47 [ label = "" ] - 155 -> 47 [ label = "" ] - 219 -> 49 [ label = "" ] - 134 -> 49 [ label = "" ] - 134 -> 219 [ label = "" ] + 94 -> 119 [ label = "" ] + 94 -> 122 [ label = "" ] + 95 -> 124 [ label = "" ] + 96 -> 124 [ label = "" ] + 96 -> 202 [ label = "" ] + 96 -> 203 [ label = "" ] + 96 -> 204 [ label = "" ] + 96 -> 205 [ label = "" ] + 97 -> 86 [ label = "" ] + 98 -> 124 [ label = "" ] + 99 -> 206 [ label = "" ] + 99 -> 179 [ label = "" ] + 99 -> 124 [ label = "" ] + 99 -> 202 [ label = "" ] + 99 -> 98 [ label = "" ] + 99 -> 203 [ label = "" ] + 99 -> 207 [ label = "" ] + 100 -> 20 [ label = "" ] + 100 -> 88 [ label = "" ] + 106 -> 107 [ label = "" ] + 107 -> 108 [ label = " 'aarch64-pc-windows-gnullvm'" ] + 107 -> 109 [ label = " 'cfg(all(target_arch = \"aarch64\", target_env = \"msvc\", not(windows_raw_dylib)))'" ] + 107 -> 110 [ label = " 'cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(windows_raw_dylib)))'" ] + 107 -> 111 [ label = " 'cfg(all(target_arch = \"x86\", target_env = \"msvc\", not(windows_raw_dylib)))'" ] + 107 -> 112 [ label = " 'cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))'" ] + 107 -> 113 [ label = " 'x86_64-pc-windows-gnullvm'" ] + 107 -> 114 [ label = " 'cfg(all(target_arch = \"x86_64\", target_env = \"msvc\", not(windows_raw_dylib)))'" ] + 116 -> 49 [ label = "" ] + 208 -> 5 [ label = "" ] + 188 -> 5 [ label = "" ] + 188 -> 208 [ label = "" ] + 189 -> 6 [ label = "" ] + 209 -> 10 [ label = "" ] + 147 -> 10 [ label = "" ] + 147 -> 209 [ label = "" ] + 125 -> 11 [ label = "" ] + 125 -> 210 [ label = "" ] + 210 -> 11 [ label = "" ] + 210 -> 81 [ label = "" ] + 155 -> 13 [ label = "" ] + 158 -> 14 [ label = "" ] + 156 -> 18 [ label = "" ] + 159 -> 19 [ label = "" ] + 211 -> 22 [ label = "" ] + 211 -> 116 [ label = "" ] + 212 -> 22 [ label = "" ] + 212 -> 211 [ label = "" ] + 213 -> 22 [ label = "" ] + 213 -> 95 [ label = "" ] + 214 -> 22 [ label = "" ] + 214 -> 83 [ label = "" ] + 215 -> 22 [ label = "" ] + 215 -> 78 [ label = "" ] + 216 -> 22 [ label = "" ] + 216 -> 77 [ label = "" ] + 217 -> 22 [ label = "" ] + 217 -> 218 [ label = "" ] + 219 -> 22 [ label = "" ] + 219 -> 217 [ label = "" ] + 220 -> 22 [ label = "" ] + 220 -> 214 [ label = "" ] + 221 -> 22 [ label = "" ] + 221 -> 215 [ label = "" ] + 194 -> 22 [ label = "" ] + 194 -> 213 [ label = "" ] + 194 -> 220 [ label = "" ] + 194 -> 212 [ label = "" ] + 194 -> 221 [ label = "" ] + 194 -> 216 [ label = "" ] + 194 -> 219 [ label = "" ] + 193 -> 25 [ label = "" ] + 193 -> 222 [ label = "" ] + 222 -> 25 [ label = "" ] + 222 -> 223 [ label = "" ] + 223 -> 25 [ label = "" ] + 223 -> 7 [ label = "" ] + 224 -> 31 [ label = "" ] + 148 -> 31 [ label = "" ] + 148 -> 224 [ label = "" ] + 139 -> 32 [ label = "" ] + 187 -> 34 [ label = "" ] + 225 -> 35 [ label = "" ] + 172 -> 35 [ label = "" ] + 172 -> 226 [ label = "" ] + 172 -> 225 [ label = "" ] + 226 -> 35 [ label = "" ] + 226 -> 0 [ label = "" ] + 149 -> 36 [ label = "" ] + 206 -> 39 [ label = "" ] + 179 -> 39 [ label = "" ] + 179 -> 206 [ label = "" ] + 140 -> 44 [ label = "" ] + 140 -> 92 [ label = "" ] + 227 -> 46 [ label = "" ] + 227 -> 161 [ label = "" ] + 165 -> 46 [ label = "" ] + 165 -> 227 [ label = "" ] + 228 -> 48 [ label = "" ] + 135 -> 48 [ label = "" ] + 135 -> 228 [ label = "" ] + 163 -> 50 [ label = "" ] 162 -> 50 [ label = "" ] - 162 -> 220 [ label = "" ] - 165 -> 50 [ label = "" ] - 165 -> 162 [ label = "" ] - 220 -> 50 [ label = "" ] - 163 -> 51 [ label = "" ] - 161 -> 52 [ label = "" ] - 161 -> 157 [ label = "" ] - 161 -> 156 [ label = "" ] - 221 -> 52 [ label = "" ] - 221 -> 45 [ label = "" ] - 222 -> 52 [ label = "" ] - 222 -> 15 [ label = "" ] - 159 -> 52 [ label = "" ] - 159 -> 222 [ label = "" ] - 159 -> 221 [ label = "" ] - 160 -> 52 [ label = "" ] - 160 -> 0 [ label = "" ] - 187 -> 53 [ label = "" ] - 187 -> 158 [ label = "" ] - 188 -> 53 [ label = "" ] - 154 -> 54 [ label = "" ] - 153 -> 54 [ label = "" ] - 223 -> 55 [ label = "" ] - 223 -> 224 [ label = "" ] - 223 -> 162 [ label = "" ] - 223 -> 163 [ label = "" ] - 130 -> 55 [ label = "" ] - 130 -> 223 [ label = "" ] - 224 -> 55 [ label = "" ] - 225 -> 56 [ label = "" ] - 225 -> 157 [ label = "" ] - 124 -> 56 [ label = "" ] - 124 -> 76 [ label = "" ] - 125 -> 56 [ label = "" ] - 125 -> 69 [ label = "" ] - 126 -> 56 [ label = "" ] - 126 -> 225 [ label = "" ] - 157 -> 58 [ label = "" ] - 164 -> 58 [ label = "" ] - 127 -> 58 [ label = "" ] - 127 -> 157 [ label = "" ] - 226 -> 59 [ label = "" ] - 226 -> 227 [ label = "" ] - 228 -> 59 [ label = "" ] - 170 -> 59 [ label = "" ] - 170 -> 226 [ label = "" ] - 227 -> 59 [ label = "" ] - 227 -> 228 [ label = "" ] - 167 -> 61 [ label = "" ] - 167 -> 166 [ label = "" ] - 167 -> 88 [ label = "" ] - 229 -> 61 [ label = "" ] - 229 -> 50 [ label = "" ] - 143 -> 61 [ label = "" ] - 143 -> 167 [ label = "" ] - 143 -> 229 [ label = "" ] - 230 -> 62 [ label = "" ] - 230 -> 167 [ label = "" ] - 230 -> 168 [ label = "" ] - 144 -> 62 [ label = "" ] - 144 -> 230 [ label = "" ] - 168 -> 63 [ label = "" ] - 168 -> 167 [ label = "" ] - 169 -> 64 [ label = "" ] - 231 -> 65 [ label = "" ] - 232 -> 65 [ label = "" ] - 233 -> 65 [ label = "" ] + 229 -> 52 [ label = "" ] + 141 -> 52 [ label = "" ] + 141 -> 229 [ label = "" ] + 169 -> 53 [ label = "" ] + 169 -> 230 [ label = "" ] + 173 -> 53 [ label = "" ] + 173 -> 169 [ label = "" ] + 230 -> 53 [ label = "" ] + 170 -> 54 [ label = "" ] + 168 -> 55 [ label = "" ] + 168 -> 164 [ label = "" ] + 168 -> 163 [ label = "" ] + 231 -> 55 [ label = "" ] + 231 -> 48 [ label = "" ] + 232 -> 55 [ label = "" ] + 232 -> 16 [ label = "" ] + 166 -> 55 [ label = "" ] + 166 -> 232 [ label = "" ] + 166 -> 231 [ label = "" ] + 167 -> 55 [ label = "" ] + 167 -> 1 [ label = "" ] + 195 -> 56 [ label = "" ] + 195 -> 165 [ label = "" ] + 196 -> 56 [ label = "" ] + 161 -> 57 [ label = "" ] + 160 -> 57 [ label = "" ] + 233 -> 58 [ label = "" ] + 233 -> 234 [ label = "" ] + 233 -> 169 [ label = "" ] + 233 -> 170 [ label = "" ] + 136 -> 58 [ label = "" ] + 136 -> 233 [ label = "" ] + 234 -> 58 [ label = "" ] + 235 -> 59 [ label = "" ] + 235 -> 164 [ label = "" ] + 130 -> 59 [ label = "" ] + 130 -> 81 [ label = "" ] + 131 -> 59 [ label = "" ] + 131 -> 73 [ label = "" ] + 132 -> 59 [ label = "" ] + 132 -> 235 [ label = "" ] + 164 -> 61 [ label = "" ] + 171 -> 61 [ label = "" ] + 133 -> 61 [ label = "" ] + 133 -> 164 [ label = "" ] + 236 -> 62 [ label = "" ] + 236 -> 117 [ label = "" ] + 237 -> 62 [ label = "" ] + 178 -> 62 [ label = "" ] + 178 -> 236 [ label = "" ] + 117 -> 62 [ label = "" ] + 117 -> 237 [ label = "" ] + 175 -> 65 [ label = "" ] + 175 -> 174 [ label = "" ] + 175 -> 93 [ label = "" ] + 238 -> 65 [ label = "" ] + 238 -> 53 [ label = "" ] 150 -> 65 [ label = "" ] - 150 -> 233 [ label = "" ] - 150 -> 231 [ label = "" ] - 150 -> 232 [ label = "" ] - 178 -> 66 [ label = "" ] - 177 -> 66 [ label = "" ] - 172 -> 67 [ label = "" ] - 112 -> 67 [ label = "" ] - 112 -> 172 [ label = "" ] - 189 -> 68 [ label = "" ] - 189 -> 172 [ label = "" ] - 113 -> 68 [ label = "" ] - 113 -> 189 [ label = "" ] - 234 -> 69 [ label = "" ] - 234 -> 235 [ label = "" ] - 236 -> 69 [ label = "" ] - 236 -> 176 [ label = "" ] - 236 -> 173 [ label = "" ] - 236 -> 237 [ label = "" ] - 236 -> 238 [ label = "" ] - 236 -> 239 [ label = "" ] - 235 -> 69 [ label = "" ] - 235 -> 70 [ label = "" ] - 239 -> 69 [ label = "" ] - 239 -> 45 [ label = "" ] - 238 -> 69 [ label = "" ] - 238 -> 175 [ label = "" ] - 128 -> 69 [ label = "" ] - 128 -> 236 [ label = "" ] - 128 -> 234 [ label = "" ] - 237 -> 69 [ label = "" ] - 237 -> 174 [ label = "" ] - 173 -> 70 [ label = "" ] - 173 -> 178 [ label = "" ] - 176 -> 71 [ label = "" ] - 176 -> 174 [ label = "" ] + 150 -> 175 [ label = "" ] + 150 -> 238 [ label = "" ] + 239 -> 66 [ label = "" ] + 239 -> 175 [ label = "" ] + 239 -> 176 [ label = "" ] + 151 -> 66 [ label = "" ] + 151 -> 239 [ label = "" ] + 176 -> 67 [ label = "" ] 176 -> 175 [ label = "" ] - 176 -> 179 [ label = "" ] - 175 -> 71 [ label = "" ] - 175 -> 32 [ label = "" ] - 174 -> 71 [ label = "" ] - 240 -> 75 [ label = "" ] - 120 -> 75 [ label = "" ] - 120 -> 76 [ label = "" ] - 121 -> 75 [ label = "" ] - 121 -> 240 [ label = "" ] - 184 -> 76 [ label = "" ] - 182 -> 76 [ label = "" ] - 182 -> 77 [ label = "" ] - 190 -> 76 [ label = "" ] - 117 -> 76 [ label = "" ] - 117 -> 182 [ label = "" ] - 118 -> 76 [ label = "" ] - 118 -> 184 [ label = "" ] - 183 -> 77 [ label = "" ] - 122 -> 78 [ label = "" ] - 241 -> 78 [ label = "" ] - 241 -> 184 [ label = "" ] - 123 -> 78 [ label = "" ] - 123 -> 241 [ label = "" ] - 194 -> 79 [ label = "" ] - 194 -> 76 [ label = "" ] - 242 -> 82 [ label = "" ] - 242 -> 184 [ label = "" ] + 177 -> 68 [ label = "" ] + 240 -> 69 [ label = "" ] + 241 -> 69 [ label = "" ] + 242 -> 69 [ label = "" ] + 157 -> 69 [ label = "" ] + 157 -> 242 [ label = "" ] + 157 -> 240 [ label = "" ] + 157 -> 241 [ label = "" ] + 186 -> 70 [ label = "" ] + 185 -> 70 [ label = "" ] + 180 -> 71 [ label = "" ] + 118 -> 71 [ label = "" ] + 118 -> 180 [ label = "" ] + 197 -> 72 [ label = "" ] + 197 -> 180 [ label = "" ] + 119 -> 72 [ label = "" ] + 119 -> 197 [ label = "" ] + 243 -> 73 [ label = "" ] + 243 -> 244 [ label = "" ] + 245 -> 73 [ label = "" ] + 245 -> 184 [ label = "" ] + 245 -> 181 [ label = "" ] + 245 -> 246 [ label = "" ] + 245 -> 247 [ label = "" ] + 245 -> 248 [ label = "" ] + 244 -> 73 [ label = "" ] + 244 -> 74 [ label = "" ] + 248 -> 73 [ label = "" ] + 248 -> 48 [ label = "" ] + 247 -> 73 [ label = "" ] + 247 -> 183 [ label = "" ] + 134 -> 73 [ label = "" ] + 134 -> 245 [ label = "" ] + 134 -> 243 [ label = "" ] + 246 -> 73 [ label = "" ] + 246 -> 182 [ label = "" ] + 181 -> 74 [ label = "" ] + 181 -> 186 [ label = "" ] + 184 -> 75 [ label = "" ] + 184 -> 182 [ label = "" ] + 184 -> 183 [ label = "" ] + 184 -> 187 [ label = "" ] + 183 -> 75 [ label = "" ] + 183 -> 34 [ label = "" ] + 182 -> 75 [ label = "" ] + 137 -> 78 [ label = "" ] + 249 -> 80 [ label = "" ] + 126 -> 80 [ label = "" ] + 126 -> 81 [ label = "" ] + 127 -> 80 [ label = "" ] + 127 -> 249 [ label = "" ] + 192 -> 81 [ label = "" ] + 190 -> 81 [ label = "" ] + 190 -> 82 [ label = "" ] + 198 -> 81 [ label = "" ] + 123 -> 81 [ label = "" ] + 123 -> 190 [ label = "" ] + 124 -> 81 [ label = "" ] + 124 -> 192 [ label = "" ] 191 -> 82 [ label = "" ] - 191 -> 76 [ label = "" ] - 192 -> 82 [ label = "" ] - 192 -> 242 [ label = "" ] - 135 -> 84 [ label = "" ] - 135 -> 53 [ label = "" ] - 243 -> 85 [ label = "" ] - 243 -> 68 [ label = "" ] - 244 -> 85 [ label = "" ] - 244 -> 172 [ label = "" ] - 244 -> 189 [ label = "" ] - 245 -> 85 [ label = "" ] - 245 -> 243 [ label = "" ] - 246 -> 85 [ label = "" ] - 145 -> 85 [ label = "" ] - 146 -> 85 [ label = "" ] - 247 -> 85 [ label = "" ] - 147 -> 85 [ label = "" ] - 147 -> 247 [ label = "" ] - 147 -> 246 [ label = "" ] - 147 -> 245 [ label = "" ] - 147 -> 248 [ label = "" ] - 147 -> 244 [ label = "" ] - 248 -> 85 [ label = "" ] - 115 -> 86 [ label = "" ] - 249 -> 86 [ label = "" ] - 249 -> 68 [ label = "" ] - 250 -> 86 [ label = "" ] - 250 -> 172 [ label = "" ] - 250 -> 189 [ label = "" ] - 251 -> 86 [ label = "" ] - 251 -> 249 [ label = "" ] - 252 -> 86 [ label = "" ] - 114 -> 86 [ label = "" ] - 253 -> 86 [ label = "" ] - 116 -> 86 [ label = "" ] - 116 -> 253 [ label = "" ] - 116 -> 252 [ label = "" ] - 116 -> 251 [ label = "" ] - 116 -> 254 [ label = "" ] - 116 -> 250 [ label = "" ] - 254 -> 86 [ label = "" ] - 131 -> 90 [ label = "" ] - 255 -> 91 [ label = "" ] - 255 -> 94 [ label = "" ] - 256 -> 91 [ label = "" ] - 256 -> 94 [ label = "" ] - 193 -> 91 [ label = "" ] - 193 -> 255 [ label = "" ] - 193 -> 256 [ label = "" ] - 195 -> 93 [ label = "" ] - 195 -> 76 [ label = "" ] - 196 -> 94 [ label = "" ] - 196 -> 76 [ label = "" ] - 196 -> 195 [ label = "" ] - 196 -> 79 [ label = "" ] - 197 -> 94 [ label = "" ] - 166 -> 97 [ label = "" ] - 139 -> 101 [ label = "" ] - 137 -> 101 [ label = "" ] - 137 -> 257 [ label = "" ] - 257 -> 101 [ label = "" ] - 257 -> 258 [ label = "" ] - 138 -> 101 [ label = "" ] - 138 -> 259 [ label = "" ] - 259 -> 101 [ label = "" ] - 259 -> 258 [ label = "" ] - 136 -> 101 [ label = "" ] - 136 -> 258 [ label = "" ] - 258 -> 101 [ label = "" ] - 260 -> 110 [ label = "" ] - 260 -> 261 [ label = "" ] - 199 -> 110 [ label = "" ] - 199 -> 260 [ label = "" ] - 261 -> 110 [ label = "" ] + 128 -> 83 [ label = "" ] + 250 -> 83 [ label = "" ] + 250 -> 192 [ label = "" ] + 129 -> 83 [ label = "" ] + 129 -> 250 [ label = "" ] + 202 -> 84 [ label = "" ] + 202 -> 81 [ label = "" ] + 251 -> 87 [ label = "" ] + 251 -> 192 [ label = "" ] + 199 -> 87 [ label = "" ] + 199 -> 81 [ label = "" ] + 200 -> 87 [ label = "" ] + 200 -> 251 [ label = "" ] + 142 -> 89 [ label = "" ] + 142 -> 56 [ label = "" ] + 252 -> 90 [ label = "" ] + 252 -> 72 [ label = "" ] + 253 -> 90 [ label = "" ] + 253 -> 180 [ label = "" ] + 253 -> 197 [ label = "" ] + 254 -> 90 [ label = "" ] + 254 -> 252 [ label = "" ] + 255 -> 90 [ label = "" ] + 152 -> 90 [ label = "" ] + 153 -> 90 [ label = "" ] + 256 -> 90 [ label = "" ] + 154 -> 90 [ label = "" ] + 154 -> 256 [ label = "" ] + 154 -> 255 [ label = "" ] + 154 -> 254 [ label = "" ] + 154 -> 257 [ label = "" ] + 154 -> 253 [ label = "" ] + 257 -> 90 [ label = "" ] + 121 -> 91 [ label = "" ] + 258 -> 91 [ label = "" ] + 258 -> 72 [ label = "" ] + 259 -> 91 [ label = "" ] + 259 -> 180 [ label = "" ] + 259 -> 197 [ label = "" ] + 260 -> 91 [ label = "" ] + 260 -> 258 [ label = "" ] + 261 -> 91 [ label = "" ] + 120 -> 91 [ label = "" ] + 262 -> 91 [ label = "" ] + 122 -> 91 [ label = "" ] + 122 -> 262 [ label = "" ] + 122 -> 261 [ label = "" ] + 122 -> 260 [ label = "" ] + 122 -> 263 [ label = "" ] + 122 -> 259 [ label = "" ] + 263 -> 91 [ label = "" ] + 138 -> 95 [ label = "" ] + 264 -> 96 [ label = "" ] + 264 -> 99 [ label = "" ] + 265 -> 96 [ label = "" ] + 265 -> 99 [ label = "" ] + 201 -> 96 [ label = "" ] + 201 -> 264 [ label = "" ] + 201 -> 265 [ label = "" ] + 203 -> 98 [ label = "" ] + 203 -> 81 [ label = "" ] + 204 -> 99 [ label = "" ] + 204 -> 81 [ label = "" ] + 204 -> 203 [ label = "" ] + 204 -> 84 [ label = "" ] + 205 -> 99 [ label = "" ] + 174 -> 102 [ label = "" ] + 146 -> 106 [ label = "" ] + 144 -> 106 [ label = "" ] + 144 -> 266 [ label = "" ] + 266 -> 106 [ label = "" ] + 266 -> 267 [ label = "" ] + 145 -> 106 [ label = "" ] + 145 -> 268 [ label = "" ] + 268 -> 106 [ label = "" ] + 268 -> 267 [ label = "" ] + 143 -> 106 [ label = "" ] + 143 -> 267 [ label = "" ] + 267 -> 106 [ label = "" ] + 269 -> 115 [ label = "" ] + 269 -> 270 [ label = "" ] + 207 -> 115 [ label = "" ] + 207 -> 269 [ label = "" ] + 270 -> 115 [ label = "" ] } From 06421519afc7e2bb9b0213ccff6e2692d6c37113 Mon Sep 17 00:00:00 2001 From: Jake Shadle Date: Wed, 1 Apr 2026 11:30:12 +0200 Subject: [PATCH 3/6] Fix lints --- .cargo/config.toml | 4 +--- src/builder.rs | 10 +++++----- src/cm.rs | 2 ++ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 45426be..9b2c411 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -11,7 +11,7 @@ rustflags = [ "-Wclippy::dbg_macro", "-Wclippy::debug_assert_with_mut_call", "-Wclippy::doc_markdown", - "-Wclippy::empty_enum", + "-Wclippy::empty_enums", "-Wclippy::enum_glob_use", "-Wclippy::exit", "-Wclippy::expl_impl_clone_on_copy", @@ -39,7 +39,6 @@ rustflags = [ "-Wclippy::map_err_ignore", "-Wclippy::map_flatten", "-Wclippy::map_unwrap_or", - "-Wclippy::match_on_vec_items", "-Wclippy::match_same_arms", "-Wclippy::match_wild_err_arm", "-Wclippy::match_wildcard_for_single_variants", @@ -62,7 +61,6 @@ rustflags = [ "-Wclippy::string_add_assign", "-Wclippy::string_add", "-Wclippy::string_lit_as_bytes", - "-Wclippy::string_to_string", "-Wclippy::todo", "-Wclippy::trait_duplication_in_bounds", "-Wclippy::unimplemented", diff --git a/src/builder.rs b/src/builder.rs index c27472b..868929e 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -665,7 +665,7 @@ impl Builder { return false; } - self.inner.get(rdep.pkg.name()).map_or(false, |renames| { + self.inner.get(rdep.pkg.name()).is_some_and(|renames| { let Ok(i) = renames.binary_search_by(|(vs, _n)| vs.cmp(&&rdep.version)) else { return false; @@ -1283,7 +1283,7 @@ impl Builder { // Crates can rename the dependency package themselves let dname = dep.rename.as_deref().unwrap_or(&dep.name); - if maybe_real_name != dname && !dep_names_match(dname, &rdep) { + if maybe_real_name != dname && !dep_names_match(dname, rdep) { return false; } @@ -1291,7 +1291,7 @@ impl Builder { // typically happens in the case of non-registry dependencies that use a pre-release // semver, if the version _is_ a prelease it will never match the empty // requirement - if !((has_prelease && dep.req.comparators.is_empty()) || dep.req.matches(&rdep_version)) { + if !((has_prelease && dep.req.comparators.is_empty()) || dep.req.matches(rdep_version)) { return false; } @@ -1309,7 +1309,7 @@ impl Builder { // Crates can rename the dependency package themselves let dname = dep.rename.as_deref().unwrap_or(&dep.name); - if maybe_real_name != dname && !dep_names_match(dname, &rdep) { + if maybe_real_name != dname && !dep_names_match(dname, rdep) { return false; } @@ -1317,7 +1317,7 @@ impl Builder { // typically happens in the case of non-registry dependencies that use a pre-release // semver, if the version _is_ a prelease it will never match the empty // requirement - if !((has_prelease && dep.req.comparators.is_empty()) || dep.req.matches(&rdep_version)) { + if !((has_prelease && dep.req.comparators.is_empty()) || dep.req.matches(rdep_version)) { return false; } diff --git a/src/cm.rs b/src/cm.rs index f07785a..8e771cc 100644 --- a/src/cm.rs +++ b/src/cm.rs @@ -183,6 +183,7 @@ pub enum DependencyKind { Build, } +#[allow(clippy::derivable_impls)] impl Default for DependencyKind { fn default() -> Self { Self::Normal @@ -600,6 +601,7 @@ impl fmt::Display for Edition { } } +#[allow(clippy::derivable_impls)] impl Default for Edition { fn default() -> Self { Self::E2015 From 50924bcb1d4a6d3e25d5b34cbb5f9f98632f8619 Mon Sep 17 00:00:00 2001 From: Jake Shadle Date: Wed, 1 Apr 2026 11:56:32 +0200 Subject: [PATCH 4/6] Update crates bytes has a vulnerability, and tame-index nuked reqwest which removes a fuckton of dependencies --- Cargo.lock | 1481 +++++-------------------------------------------- Cargo.toml | 15 +- src/errors.rs | 3 - src/lib.rs | 34 -- tests/misc.rs | 2 +- tests/util.rs | 3 - 6 files changed, 146 insertions(+), 1392 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7a89930..63a0406 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,21 +2,6 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" - [[package]] name = "allocator-api2" version = "0.2.21" @@ -25,9 +10,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "anstream" -version = "0.6.18" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -40,15 +25,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] @@ -73,52 +58,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "async-compression" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b37fc50485c4f3f736a4fb14199f6d5f5ba008d7f28fe710306c92780f004c07" -dependencies = [ - "flate2", - "futures-core", - "memchr", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "autocfg" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" - -[[package]] -name = "backtrace" -version = "0.3.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets 0.52.6", -] - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - [[package]] name = "bitflags" version = "2.9.1" @@ -145,64 +84,26 @@ dependencies = [ "serde", ] -[[package]] -name = "bumpalo" -version = "3.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" - [[package]] name = "bytes" -version = "1.10.1" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "camino" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.19.2" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "cc" -version = "1.2.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4ac86a9e5bc1e2b3449ab9d7d3a6a405e3d1bb28d7b9be8614f55846ae3766" -dependencies = [ - "shlex", + "serde_core", ] [[package]] name = "cfg-expr" -version = "0.20.0" +version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e34e221e91c7eb5e8315b5c9cf1a61670938c0626451f954a51693ed44b37f45" +checksum = "3c6b04e07d8080154ed4ac03546d9a2b303cc2fe1901ba0b35b301516e289368" dependencies = [ "smallvec", "target-lexicon", @@ -222,9 +123,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "clap" -version = "4.5.38" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed93b9805f8ba930df42c2590f05453d5ec36cbb85d018868a5b24d31f6ac000" +checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" dependencies = [ "clap_builder", "clap_derive", @@ -232,9 +133,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.38" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "379026ff283facf611b0ea629334361c4211d1b12ee01024eec1591133b04120" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ "anstream", "anstyle", @@ -244,9 +145,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.32" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" +checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" dependencies = [ "heck", "proc-macro2", @@ -256,9 +157,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "colorchoice" @@ -279,23 +180,14 @@ dependencies = [ ] [[package]] -name = "crc32fast" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" +name = "console" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "d64e8af5551369d19cf50138de61f1c42074ab970f74e99be916646777f8fc87" dependencies = [ - "proc-macro2", - "quote", - "syn", + "encode_unicode", + "libc", + "windows-sys 0.61.2", ] [[package]] @@ -311,20 +203,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] -name = "fixedbitset" -version = "0.5.7" +name = "errno" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] [[package]] -name = "flate2" -version = "1.1.1" +name = "fastrand" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" -dependencies = [ - "crc32fast", - "miniz_oxide", -] +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "fnv" @@ -338,78 +236,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-core", - "futures-io", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "getrandom" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.3.3" @@ -417,36 +243,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", - "wasm-bindgen", -] - -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - -[[package]] -name = "h2" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" -dependencies = [ - "atomic-waker", - "bytes", - "fnv", - "futures-core", - "futures-sink", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", + "wasi", ] [[package]] @@ -486,200 +285,6 @@ dependencies = [ "itoa", ] -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "http-body-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" -dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" - -[[package]] -name = "hyper" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "itoa", - "pin-project-lite", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" -dependencies = [ - "futures-util", - "http", - "hyper", - "hyper-util", - "rustls", - "rustls-pki-types", - "tokio", - "tokio-rustls", - "tower-service", - "webpki-roots 0.26.11", -] - -[[package]] -name = "hyper-util" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9f1e950e0d9d1d3c47184416723cf29c0d1f93bd8cccf37e4beb6b44f31710" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "hyper", - "libc", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", -] - -[[package]] -name = "icu_collections" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" -dependencies = [ - "displaydoc", - "potential_utf", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" - -[[package]] -name = "icu_properties" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "potential_utf", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" - -[[package]] -name = "icu_provider" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" -dependencies = [ - "displaydoc", - "icu_locale_core", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "idna" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - [[package]] name = "indexmap" version = "2.9.0" @@ -692,22 +297,17 @@ dependencies = [ [[package]] name = "insta" -version = "1.43.1" +version = "1.47.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "154934ea70c58054b556dd430b99a98c2a7ff5309ac9891597e339b5c28f4371" +checksum = "7b4a6248eb93a4401ed2f37dfe8ea592d3cf05b7cf4f8efa867b6895af7e094e" dependencies = [ - "console", + "console 0.16.3", "once_cell", "serde", "similar", + "tempfile", ] -[[package]] -name = "ipnet" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" - [[package]] name = "is_terminal_polyfill" version = "1.70.1" @@ -720,23 +320,11 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" -[[package]] -name = "js-sys" -version = "0.3.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - [[package]] name = "krates" version = "0.20.0" dependencies = [ "camino", - "cargo-platform", - "cargo_metadata", "cfg-expr", "clap", "insta", @@ -750,27 +338,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.172" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" - -[[package]] -name = "litemap" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" - -[[package]] -name = "log" -version = "0.4.27" +version = "0.2.183" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" [[package]] -name = "lru-slab" -version = "0.1.2" +name = "linux-raw-sys" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "memchr" @@ -779,171 +355,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] -name = "mime" -version = "0.3.17" +name = "once_cell" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] -name = "miniz_oxide" -version = "0.8.8" +name = "once_cell_polyfill" +version = "1.70.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +checksum = "2611b99ab098a31bdc8be48b4f1a285ca0ced28bd5b4f23e45efa8c63b09efa5" dependencies = [ - "adler2", + "once_cell", ] [[package]] -name = "mio" -version = "1.0.3" +name = "petgraph" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "7a98c6720655620a521dcc722d0ad66cd8afd5d86e34a89ef691c50b7b24de06" dependencies = [ - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "fixedbitset", + "hashbrown", + "indexmap", ] [[package]] -name = "object" -version = "0.36.7" +name = "proc-macro2" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ - "memchr", + "unicode-ident", ] [[package]] -name = "once_cell" -version = "1.21.3" +name = "quote" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" - -[[package]] -name = "once_cell_polyfill" -version = "1.70.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2611b99ab098a31bdc8be48b4f1a285ca0ced28bd5b4f23e45efa8c63b09efa5" -dependencies = [ - "once_cell", -] - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "petgraph" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a98c6720655620a521dcc722d0ad66cd8afd5d86e34a89ef691c50b7b24de06" -dependencies = [ - "fixedbitset", - "hashbrown", - "indexmap", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "potential_utf" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" -dependencies = [ - "zerovec", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "proc-macro2" -version = "1.0.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quinn" -version = "0.11.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" -dependencies = [ - "bytes", - "cfg_aliases", - "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash", - "rustls", - "socket2", - "thiserror", - "tokio", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-proto" -version = "0.11.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" -dependencies = [ - "bytes", - "getrandom 0.3.3", - "lru-slab", - "rand", - "ring", - "rustc-hash", - "rustls", - "rustls-pki-types", - "slab", - "thiserror", - "tinyvec", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-udp" -version = "0.5.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842" -dependencies = [ - "cfg_aliases", - "libc", - "once_cell", - "socket2", - "tracing", - "windows-sys 0.59.0", -] - -[[package]] -name = "quote" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -954,114 +404,12 @@ version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" -[[package]] -name = "rand" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" -dependencies = [ - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" -dependencies = [ - "getrandom 0.3.3", -] - [[package]] name = "regex-automata" version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" -[[package]] -name = "reqwest" -version = "0.12.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" -dependencies = [ - "async-compression", - "base64", - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-util", - "ipnet", - "js-sys", - "log", - "mime", - "once_cell", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls", - "rustls-pemfile", - "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tokio-rustls", - "tokio-util", - "tower", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots 0.26.11", - "windows-registry", -] - -[[package]] -name = "ring" -version = "0.17.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" -dependencies = [ - "cc", - "cfg-if", - "getrandom 0.2.16", - "libc", - "untrusted", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "rustc-hash" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" - [[package]] name = "rustc-stable-hash" version = "0.1.2" @@ -1069,84 +417,52 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "781442f29170c5c93b7185ad559492601acdc71d5bb0706f5868094f45cfcd08" [[package]] -name = "rustls" -version = "0.23.27" +name = "rustix" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "once_cell", - "ring", - "rustls-pki-types", - "rustls-webpki", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-pemfile" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "rustls-pki-types" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" -dependencies = [ - "web-time", - "zeroize", + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", ] [[package]] -name = "rustls-webpki" -version = "0.103.3" +name = "semver" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", + "serde", + "serde_core", ] [[package]] -name = "rustversion" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" - -[[package]] -name = "ryu" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" - -[[package]] -name = "semver" -version = "1.0.26" +name = "serde" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ - "serde", + "serde_core", + "serde_derive", ] [[package]] -name = "serde" -version = "1.0.219" +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -1155,34 +471,17 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ "itoa", "memchr", - "ryu", - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", "serde", + "serde_core", + "zmij", ] -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - [[package]] name = "similar" version = "2.7.0" @@ -1199,19 +498,10 @@ version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5b441962c817e33508847a22bd82f03a30cff43642dc2fae8b050566121eb9a" dependencies = [ - "console", + "console 0.15.11", "similar", ] -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - [[package]] name = "smallvec" version = "1.15.0" @@ -1228,77 +518,34 @@ dependencies = [ "serde", ] -[[package]] -name = "socket2" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - [[package]] name = "strsim" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - [[package]] name = "syn" -version = "2.0.101" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -dependencies = [ - "futures-core", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "tame-index" -version = "0.21.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1f2b7ed9e6bd696ca0b06e6cb8ce10f054964a9c0de8efd868e63350a40d475" +checksum = "e5f1e5570f80c3af4271618e184a48d9e23b99182e3ab8b290503b2a7fedafb1" dependencies = [ "camino", "home", "http", "libc", "memchr", - "reqwest", "rustc-stable-hash", "semver", "serde", @@ -1311,9 +558,22 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a" +checksum = "df7f62577c25e07834649fc3b39fafdc597c0a3527dc1c60129201ccfcbaa50c" + +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] [[package]] name = "thiserror" @@ -1335,130 +595,15 @@ dependencies = [ "syn", ] -[[package]] -name = "tinystr" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tinyvec" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2513ca694ef9ede0fb23fe71a4ee4107cb102b9dc1930f6d0fd77aae068ae165" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "pin-project-lite", - "socket2", - "windows-sys 0.52.0", -] - -[[package]] -name = "tokio-rustls" -version = "0.26.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" -dependencies = [ - "rustls", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - [[package]] name = "toml-span" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70edfdbb3bd469419e2e941b869a7170c158dea27a71da32521f0a6c1f1338db" +checksum = "5c6532e5b62b652073bff0e2050ef57e4697a853be118d6c57c32b59fffdeaab" dependencies = [ "smallvec", ] -[[package]] -name = "tower" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper", - "tokio", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" -dependencies = [ - "pin-project-lite", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" -dependencies = [ - "once_cell", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - [[package]] name = "twox-hash" version = "2.1.0" @@ -1477,50 +622,12 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[package]] -name = "url" -version = "2.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - [[package]] name = "utf8parse" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - [[package]] name = "wasi" version = "0.14.2+wasi-0.2.4" @@ -1530,166 +637,28 @@ dependencies = [ "wit-bindgen-rt", ] -[[package]] -name = "wasm-bindgen" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" -dependencies = [ - "cfg-if", - "js-sys", - "once_cell", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "web-sys" -version = "0.3.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-roots" -version = "0.26.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" -dependencies = [ - "webpki-roots 1.0.0", -] - -[[package]] -name = "webpki-roots" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2853738d1cc4f2da3a225c18ec6c3721abb31961096e9dbf5ab35fa88b19cfdb" -dependencies = [ - "rustls-pki-types", -] - [[package]] name = "windows-link" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" - -[[package]] -name = "windows-registry" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" -dependencies = [ - "windows-result", - "windows-strings", - "windows-targets 0.53.0", -] - -[[package]] -name = "windows-result" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.3.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" -dependencies = [ - "windows-link", -] +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-sys" -version = "0.52.0" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows-targets 0.52.6", + "windows-targets", ] [[package]] name = "windows-sys" -version = "0.59.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -1698,30 +667,14 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" -dependencies = [ - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] [[package]] @@ -1730,96 +683,48 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" - [[package]] name = "windows_i686_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" -[[package]] -name = "windows_i686_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" - [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" - [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_i686_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" - [[package]] name = "wit-bindgen-rt" version = "0.39.0" @@ -1830,111 +735,7 @@ dependencies = [ ] [[package]] -name = "writeable" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" - -[[package]] -name = "yoke" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zerocopy" -version = "0.8.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zerofrom" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.6" +name = "zmij" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" - -[[package]] -name = "zerotrie" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/Cargo.toml b/Cargo.toml index a388115..27aa927 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,22 +21,15 @@ rust-version = "1.85.0" default = [] # Adds support for filtering target specific dependencies targets = ["cfg-expr/targets"] -# Enables interop with cargo_metadata, if not enabled uses types defined within krates -metadata = ["dep:cargo_metadata", "dep:cargo-platform"] # Enables serialization of the metadata types within krates serialize = [] [dependencies] camino = { version = "1.1", features = ["serde1"] } -# Used for acquiring and/or deserializing `cargo metadata` output -cargo_metadata = { version = "0.19", default-features = false, optional = true } -# We need to use a type from this because it use part of the public API of cargo_metadata -# ...but it's not actually in the public API :p -cargo-platform = { version = "0.1", default-features = false, optional = true } # Used to parse and evaluate cfg() expressions for dependencies cfg-expr = "0.20" # Used to create and traverse graph structures -petgraph = { version = "0.8", default-features = false } +petgraph = { version = "=0.8.1", default-features = false } # Used for checking version requirements semver = { version = "1.0", features = ["serde"] } serde = "1.0" @@ -44,14 +37,14 @@ serde_json = "1.0" [dev-dependencies] # Example CLI -clap = { version = "4.5", features = ["derive"] } -insta = { version = "1.40", features = ["json"] } +clap = { version = "4.6", features = ["derive"] } +insta = { version = "1.47", features = ["json"] } # Used to print colored diffs in case of test failures similar-asserts = "1.6" # Used to deserialize test files into metadata we can load serde_json = "1.0" # index metadata retrieval -tame-index = "0.21" +tame-index = "0.26" [profile.dev.package.insta] opt-level = 3 diff --git a/src/errors.rs b/src/errors.rs index 6e94f39..e93ca98 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -1,7 +1,4 @@ -#[cfg(not(feature = "metadata"))] use crate::cm::Error as CMErr; -#[cfg(feature = "metadata")] -use cargo_metadata::Error as CMErr; use std::fmt; /// Errors that can occur when acquiring metadata to create a graph from diff --git a/src/lib.rs b/src/lib.rs index 0241042..d8586ff 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -25,9 +25,6 @@ //! } //! ``` -#[cfg(feature = "metadata")] -pub use cargo_metadata as cm; -#[cfg(not(feature = "metadata"))] pub mod cm; pub use cfg_expr; @@ -307,8 +304,6 @@ impl From for DepKind { DK::Normal => Self::Normal, DK::Build => Self::Build, DK::Development => Self::Dev, - #[cfg(feature = "metadata")] - DK::Unknown => unreachable!(), } } } @@ -882,27 +877,8 @@ impl std::ops::Index for Krates { struct MdTarget { inner: String, cfg: Option, - #[cfg(feature = "metadata")] - platform: cargo_platform::Platform, } -#[cfg(feature = "metadata")] -impl From for MdTarget { - fn from(platform: cargo_platform::Platform) -> Self { - let inner = platform.to_string(); - let cfg = inner - .starts_with("cfg(") - .then(|| cfg_expr::Expression::parse(&inner).ok()) - .flatten(); - Self { - inner, - cfg, - platform, - } - } -} - -#[cfg(not(feature = "metadata"))] impl From for MdTarget { fn from(inner: String) -> Self { let cfg = inner @@ -913,16 +889,6 @@ impl From for MdTarget { } } -#[cfg(feature = "metadata")] -fn targets_eq(target: &Option, other: &Option) -> bool { - match (target, other) { - (None, None) => true, - (Some(a), Some(b)) => a.platform.eq(b), - _ => false, - } -} - -#[cfg(not(feature = "metadata"))] fn targets_eq(target: &Option, other: &Option) -> bool { match (target, other) { (None, None) => true, diff --git a/tests/misc.rs b/tests/misc.rs index 866856b..ab87af8 100644 --- a/tests/misc.rs +++ b/tests/misc.rs @@ -217,7 +217,7 @@ fn finds_duplicates() { } #[test] -#[cfg(all(feature = "serialize", not(feature = "metadata")))] +#[cfg(feature = "serialize")] fn roundtrip() { let contents = std::fs::read_to_string("tests/all-features.json").unwrap(); let md: krates::cm::Metadata = serde_json::from_str(&contents).unwrap(); diff --git a/tests/util.rs b/tests/util.rs index 69ffd45..988e68b 100644 --- a/tests/util.rs +++ b/tests/util.rs @@ -98,10 +98,7 @@ pub fn build>(src: P, kb: krates::Builder) -> Result Date: Wed, 1 Apr 2026 11:58:25 +0200 Subject: [PATCH 5/6] Remove --features metadata check --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 65828db..2d76bb6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,7 +37,7 @@ jobs: strategy: matrix: os: [ubuntu-24.04] - features: ["--features targets", "--features metadata", null] + features: ["--features targets", null] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 From 031541e3f3a27b782b322704fc5bd73f5e876bb3 Mon Sep 17 00:00:00 2001 From: Jake Shadle Date: Wed, 1 Apr 2026 12:03:17 +0200 Subject: [PATCH 6/6] Update CHANGELOG --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 77ee21f..5086969 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] - ReleaseDate +### Changed +- [PR#107](https://github.com/EmbarkStudios/krates/pull/107) updated crates. + +### Removed +- [PR#107](https://github.com/EmbarkStudios/krates/pull/107) removed the `metadata` feature and thus compatibility with cargo_metadata. + +### Fixed +- [PR#107](https://github.com/EmbarkStudios/krates/pull/107) fixed an issue where crates which renamed their lib target and were gated behind a feature in a dependent that didn't rename it would be pruned from the final graph erroneously. + ## [0.20.0] - 2025-05-22 ### Changed - [PR#103](https://github.com/EmbarkStudios/krates/pull/103) updated petgraph -> 0.8.