This commit is contained in:
Robin Appelman 2026-07-11 21:13:20 +02:00
commit 97ee910d85
36 changed files with 716 additions and 762 deletions

386
Cargo.lock generated
View file

@ -1,36 +1,36 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
version = 4
[[package]]
name = "addr2line"
version = "0.24.2"
version = "0.25.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b"
dependencies = [
"gimli",
]
[[package]]
name = "adler2"
version = "2.0.0"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
[[package]]
name = "aho-corasick"
version = "1.1.3"
version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
dependencies = [
"memchr",
]
[[package]]
name = "backtrace"
version = "0.3.74"
version = "0.3.76"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"
checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6"
dependencies = [
"addr2line",
"cfg-if",
@ -38,7 +38,7 @@ dependencies = [
"miniz_oxide",
"object",
"rustc-demangle",
"windows-targets",
"windows-link",
]
[[package]]
@ -50,45 +50,26 @@ dependencies = [
"backtrace",
]
[[package]]
name = "base64"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
[[package]]
name = "beef"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1"
[[package]]
name = "bitflags"
version = "1.3.2"
version = "2.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
[[package]]
name = "cfg-if"
version = "1.0.0"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
[[package]]
name = "console"
version = "0.15.10"
version = "0.16.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b"
checksum = "4fe5f465a4f6fee88fad41b85d990f84c835335e85b5d9e6e63e0d06d28cba7c"
dependencies = [
"encode_unicode",
"libc",
"once_cell",
"windows-sys",
]
@ -100,14 +81,20 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
[[package]]
name = "errno"
version = "0.3.10"
version = "0.3.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d"
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
dependencies = [
"libc",
"windows-sys",
]
[[package]]
name = "fastrand"
version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
[[package]]
name = "fnv"
version = "1.0.7"
@ -115,24 +102,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "gimli"
version = "0.31.1"
name = "getrandom"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
dependencies = [
"cfg-if",
"libc",
"r-efi",
]
[[package]]
name = "gimli"
version = "0.32.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7"
[[package]]
name = "insta"
version = "1.42.1"
version = "1.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71c1b125e30d93896b365e156c33dadfffab45ee8400afcbba4752f59de08a86"
checksum = "86f0f8fee8c926415c58d6ae43a08523a26faccb2323f5e6b644fe7dd4ef6b82"
dependencies = [
"console",
"linked-hash-map",
"once_cell",
"pin-project",
"ron",
"serde",
"similar",
"tempfile",
]
[[package]]
@ -141,59 +137,46 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45"
[[package]]
name = "lazy_static"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]]
name = "libc"
version = "0.2.170"
version = "0.2.186"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828"
[[package]]
name = "linked-hash-map"
version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
[[package]]
name = "linux-raw-sys"
version = "0.4.15"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
[[package]]
name = "logos"
version = "0.14.4"
version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7251356ef8cb7aec833ddf598c6cb24d17b689d20b993f9d11a3d764e34e6458"
checksum = "eb2c55a318a87600ea870ff8c2012148b44bf18b74fad48d0f835c38c7d07c5f"
dependencies = [
"logos-derive",
]
[[package]]
name = "logos-codegen"
version = "0.14.4"
version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59f80069600c0d66734f5ff52cc42f2dabd6b29d205f333d61fd7832e9e9963f"
checksum = "58b3ffaa284e1350d017a57d04ada118c4583cf260c8fb01e0fe28a2e9cf8970"
dependencies = [
"beef",
"fnv",
"lazy_static",
"proc-macro2",
"quote",
"regex-automata",
"regex-syntax",
"syn",
]
[[package]]
name = "logos-derive"
version = "0.14.4"
version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24fb722b06a9dc12adb0963ed585f19fc61dc5413e6a9be9422ef92c091e731d"
checksum = "52d3a9855747c17eaf4383823f135220716ab49bea5fbea7dd42cc9a92f8aa31"
dependencies = [
"logos-codegen",
]
@ -206,15 +189,15 @@ checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
[[package]]
name = "memchr"
version = "2.7.4"
version = "2.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
[[package]]
name = "miette"
version = "7.5.0"
version = "7.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a955165f87b37fd1862df2a59547ac542c77ef6d17c666f619d1ad22dd89484"
checksum = "5f98efec8807c63c752b5bd61f862c165c115b0a35685bdcfd9238c7aeb592b7"
dependencies = [
"backtrace",
"backtrace-ext",
@ -226,15 +209,14 @@ dependencies = [
"supports-unicode",
"terminal_size",
"textwrap",
"thiserror 1.0.69",
"unicode-width",
"unicode-width 0.1.14",
]
[[package]]
name = "miette-derive"
version = "7.5.0"
version = "7.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf45bf44ab49be92fd1227a3be6fc6f617f1a337c06af54981048574d8783147"
checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b"
dependencies = [
"proc-macro2",
"quote",
@ -243,39 +225,39 @@ dependencies = [
[[package]]
name = "miniz_oxide"
version = "0.8.5"
version = "0.8.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5"
checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
dependencies = [
"adler2",
]
[[package]]
name = "object"
version = "0.36.7"
version = "0.37.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe"
dependencies = [
"memchr",
]
[[package]]
name = "once_cell"
version = "1.20.3"
version = "1.21.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
[[package]]
name = "owo-colors"
version = "4.2.0"
version = "4.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1036865bb9422d3300cf723f657c2851d0e9ab12567854b1f4eba3d77decf564"
checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d"
[[package]]
name = "parse-display"
version = "0.9.1"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "914a1c2265c98e2446911282c6ac86d8524f495792c38c5bd884f80499c7538a"
checksum = "e78deb158fb1d73b29efb4b7e9b9860b78059c670de06bd28df8d0b458ded0eb"
dependencies = [
"parse-display-derive",
"regex",
@ -284,9 +266,9 @@ dependencies = [
[[package]]
name = "parse-display-derive"
version = "0.9.1"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2ae7800a4c974efd12df917266338e79a7a74415173caf7e70aa0a0707345281"
checksum = "8e95a50d1084dab562913062c4c34bb204b68fc6ec38a1395909ff5aaaf4f10a"
dependencies = [
"proc-macro2",
"quote",
@ -296,49 +278,35 @@ dependencies = [
"syn",
]
[[package]]
name = "pin-project"
version = "1.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
version = "1.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "proc-macro2"
version = "1.0.93"
version = "1.0.106"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.38"
version = "1.0.46"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368"
dependencies = [
"proc-macro2",
]
[[package]]
name = "regex"
version = "1.11.1"
name = "r-efi"
version = "6.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
[[package]]
name = "regex"
version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2"
dependencies = [
"aho-corasick",
"memchr",
@ -348,9 +316,9 @@ dependencies = [
[[package]]
name = "regex-automata"
version = "0.4.9"
version = "0.4.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db"
dependencies = [
"aho-corasick",
"memchr",
@ -359,34 +327,23 @@ dependencies = [
[[package]]
name = "regex-syntax"
version = "0.8.5"
version = "0.8.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]]
name = "ron"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88073939a61e5b7680558e6be56b419e208420c2adb92be54921fa6b72283f1a"
dependencies = [
"base64",
"bitflags 1.3.2",
"serde",
]
checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
[[package]]
name = "rustc-demangle"
version = "0.1.24"
version = "0.1.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
checksum = "b74b56ffa8bb2830709a538c2cbcae9aa062db0d2a42563bfb09bdaae44020eb"
[[package]]
name = "rustix"
version = "0.38.44"
version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
dependencies = [
"bitflags 2.8.0",
"bitflags",
"errno",
"libc",
"linux-raw-sys",
@ -472,9 +429,9 @@ dependencies = [
[[package]]
name = "supports-hyperlinks"
version = "3.1.0"
version = "3.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "804f44ed3c63152de6a9f90acbea1a110441de43006ea51bcce8f436196a288b"
checksum = "e396b6523b11ccb83120b115a0b7366de372751aa6edf19844dfb13a6af97e91"
[[package]]
name = "supports-unicode"
@ -484,9 +441,9 @@ checksum = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2"
[[package]]
name = "syn"
version = "2.0.98"
version = "2.0.118"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
dependencies = [
"proc-macro2",
"quote",
@ -494,10 +451,23 @@ dependencies = [
]
[[package]]
name = "terminal_size"
version = "0.4.1"
name = "tempfile"
version = "3.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9"
checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
dependencies = [
"fastrand",
"getrandom",
"once_cell",
"rustix",
"windows-sys",
]
[[package]]
name = "terminal_size"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874"
dependencies = [
"rustix",
"windows-sys",
@ -538,48 +508,28 @@ dependencies = [
[[package]]
name = "textwrap"
version = "0.16.1"
version = "0.16.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9"
checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057"
dependencies = [
"unicode-linebreak",
"unicode-width",
"unicode-width 0.2.2",
]
[[package]]
name = "thiserror"
version = "1.0.69"
version = "2.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
dependencies = [
"thiserror-impl 1.0.69",
]
[[package]]
name = "thiserror"
version = "2.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc"
dependencies = [
"thiserror-impl 2.0.11",
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.69"
version = "2.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "thiserror-impl"
version = "2.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2"
checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
dependencies = [
"proc-macro2",
"quote",
@ -588,9 +538,9 @@ dependencies = [
[[package]]
name = "unicode-ident"
version = "1.0.17"
version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
[[package]]
name = "unicode-linebreak"
@ -604,9 +554,15 @@ version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
[[package]]
name = "unicode-width"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
[[package]]
name = "vdf-reader"
version = "0.3.3"
version = "0.3.4"
dependencies = [
"insta",
"logos",
@ -616,7 +572,7 @@ dependencies = [
"serde",
"serde_core",
"test-case",
"thiserror 2.0.11",
"thiserror",
"walkdir",
]
@ -632,82 +588,24 @@ dependencies = [
[[package]]
name = "winapi-util"
version = "0.1.9"
version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
dependencies = [
"windows-sys",
]
[[package]]
name = "windows-link"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
[[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",
"windows-link",
]
[[package]]
name = "windows-targets"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [
"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]]
name = "windows_aarch64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[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_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
name = "windows_i686_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[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_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"

View file

@ -1,22 +1,22 @@
[package]
name = "vdf-reader"
version = "0.3.3"
edition = "2021"
version = "0.3.4"
edition = "2024"
description = "Rust parser for valve vdf files."
license = "MIT"
repository = "https://codeberg.org/icewind/vdf-reader"
rust-version = "1.70.0"
rust-version = "1.86.0"
[dependencies]
logos = "0.14.0"
logos = "0.16.1"
thiserror = "2.0.11"
miette = "7.5.0"
parse-display = "0.9.0"
parse-display = "0.11.0"
serde_core = "1.0.228"
[dev-dependencies]
test-case = "3.3.1"
insta = { version = "1.38.0", features = ["ron"] }
insta = { version = "1.38.0", features = ["json"] }
miette = { version = "7.2.0", features = ["fancy"] }
walkdir = "2.5.0"
maplit = "1.0.2"

34
flake.lock generated
View file

@ -2,11 +2,11 @@
"nodes": {
"crane": {
"locked": {
"lastModified": 1763938834,
"narHash": "sha256-j8iB0Yr4zAvQLueCZ5abxfk6fnG/SJ5JnGUziETjwfg=",
"lastModified": 1780099841,
"narHash": "sha256-EVZd2RsbpreRUDSi9rBwPY+ZxoyMaiEBbZxxhljbaS4=",
"owner": "ipetkov",
"repo": "crane",
"rev": "d9e753122e51cee64eb8d2dddfe11148f339f5a2",
"rev": "0532eb17955225173906d671fb36306bdeb1e2dc",
"type": "github"
},
"original": {
@ -22,11 +22,11 @@
]
},
"locked": {
"lastModified": 1767012911,
"narHash": "sha256-+olVAh2dL9mg7C94bMYFpfzqaplHVigtUSpszS86xDM=",
"lastModified": 1783352529,
"narHash": "sha256-FZDPaZdAAjFbJWR/BoWCCVYB16WV0b472vhUPlQawh0=",
"owner": "nix-community",
"repo": "flakelight",
"rev": "1eb3dee6b0dfbae9d0cb0c139a816ea62c5aa7ca",
"rev": "da36ab2f725feb14b287ff1d6d56f6fc8ce6be5a",
"type": "github"
},
"original": {
@ -44,11 +44,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1764619631,
"narHash": "sha256-WojMP5S9qLmOLecEQ+7+yc33Ly1ydoRsODNG6hlLqiQ=",
"lastModified": 1780231986,
"narHash": "sha256-OyafczPtzE0Xa2zl3j/KvV2+ZVYGhYQHt0MOVWtDXlY=",
"ref": "refs/heads/main",
"rev": "0fae557bf52d8493840aca52d433c473ecc305ef",
"revCount": 67,
"rev": "f5cbda29b945df03256bf63c22fa4cd5fa429e67",
"revCount": 72,
"type": "git",
"url": "https://codeberg.org/icewind/mill-scale"
},
@ -59,16 +59,16 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1767325753,
"narHash": "sha256-yA/CuWyqm+AQo2ivGy6PlYrjZBQm7jfbe461+4HF2fo=",
"lastModified": 1783703440,
"narHash": "sha256-O3/YajjWo001VUIgD8BwaRdSNLUFe7nZ1qV5TwhRBcw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "64049ca74d63e971b627b5f3178d95642e61cedd",
"rev": "8f0500b9660505dc3cb647775fe9a978a74b5283",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-25.11",
"ref": "nixos-26.05",
"type": "indirect"
}
},
@ -88,11 +88,11 @@
]
},
"locked": {
"lastModified": 1764557621,
"narHash": "sha256-kX5PoY8hQZ80+amMQgOO9t8Tc1JZ70gYRnzaVD4AA+o=",
"lastModified": 1780197589,
"narHash": "sha256-FVCr2Ij/jKf59a4LW481eeOF6rJRreOBrVgW/aUBTrw=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "93316876c2229460a5d6f5f052766cc4cef538ce",
"rev": "21632e942d89bf1cce4e5a63d7e58a215a0cbfcc",
"type": "github"
},
"original": {

View file

@ -1,6 +1,6 @@
{
inputs = {
nixpkgs.url = "nixpkgs/nixos-25.11";
nixpkgs.url = "nixpkgs/nixos-26.05";
flakelight = {
url = "github:nix-community/flakelight";
inputs.nixpkgs.follows = "nixpkgs";

View file

@ -48,7 +48,7 @@ fn insert<K: Into<String>, V: Into<Entry>>(map: &mut HashMap<String, Entry>, key
entry.insert(value);
}
hash_map::Entry::Occupied(mut entry) => match entry.get_mut() {
Entry::Array(ref mut array) => {
Entry::Array(array) => {
array.push(value);
}
_ => {

View file

@ -5,7 +5,7 @@ use std::str;
/// Parser token.
#[derive(PartialEq, Debug, Logos, Display, Clone)]
#[logos(skip r"[ \t\f\r\n]+")] // whitespace
#[logos(skip r"//[^\n]*")] // comments
#[logos(skip(r"//[^\n]*", allow_greedy = true))] // comments
pub enum Token {
/// A group is starting.
#[token("{")]

View file

@ -44,13 +44,11 @@ impl<'de> Deserializer<'de> {
.take()
.or_else(|| self.tokenizer.next())
.map(|r| {
r.map(|t| {
r.inspect(|t| {
self.last_span = t.span.clone();
t
})
.map_err(|span| {
.inspect_err(|span| {
self.last_span = span.clone();
span
})
})
}
@ -306,7 +304,7 @@ impl<'de> de::Deserializer<'de> for &'_ mut Deserializer<'de> {
Some(Err(span)) => {
return Err(
NoValidTokenError::new(VALUE_TOKEN, span.into(), self.source().into()).into(),
)
);
}
Some(Ok(token)) => token,
};
@ -516,7 +514,7 @@ impl<'source, 'a> TableWalker<'source, 'a> {
(None, false) => {
return Err(None::<SpannedToken>
.expect_token(expected, self.source())
.unwrap_err())
.unwrap_err());
}
};

View file

@ -13,5 +13,8 @@ fn test_parse(path: &str) {
let parsed = Table::load(&mut reader)
.map_err(miette::Error::from)
.expect("failed to parse test data");
insta::assert_ron_snapshot!(path, parsed);
insta::with_settings!({sort_maps => true}, {
insta::assert_json_snapshot!(format!("parse__{}", path), parsed);
});
}

View file

@ -216,16 +216,18 @@ struct GameList {
#[test_case("tests/data/maparray.vdf")]
#[test_case("tests/errors/invalidmaparraykeys.vdf")]
fn test_serde(path: &str) {
let raw = read_to_string(path).unwrap();
match from_str::<Expected>(&raw) {
Ok(result) => insta::assert_ron_snapshot!(path, result),
Err(e) => {
let handler = GraphicalReportHandler::new_themed(GraphicalTheme::unicode_nocolor());
let mut out = String::new();
handler.render_report(&mut out, &e).unwrap();
insta::assert_snapshot!(path, out)
insta::with_settings!({sort_maps => true}, {
let raw = read_to_string(path).unwrap();
match from_str::<Expected>(&raw) {
Ok(result) => insta::assert_json_snapshot!(path, result),
Err(e) => {
let handler = GraphicalReportHandler::new_themed(GraphicalTheme::unicode_nocolor());
let mut out = String::new();
handler.render_report(&mut out, &e).unwrap();
insta::assert_snapshot!(format!("serde__{}", path), out)
}
}
}
});
}
#[test_case("tests/data/toplevel.vdf")]
@ -234,18 +236,20 @@ fn test_serde(path: &str) {
#[test_case("tests/data/serde_array_type.vdf")]
#[test_case("tests/data/maparray.vdf")]
fn test_serde_table(path: &str) {
let raw = read_to_string(path).unwrap();
match from_str::<Table>(&raw) {
Ok(result) => {
insta::assert_ron_snapshot!(format!("table__{}", path), result);
insta::with_settings!({sort_maps => true}, {
let raw = read_to_string(path).unwrap();
match from_str::<Table>(&raw) {
Ok(result) => {
insta::assert_json_snapshot!(format!("table__{}", path), result);
}
Err(e) => {
let handler = GraphicalReportHandler::new_themed(GraphicalTheme::unicode_nocolor());
let mut out = String::new();
handler.render_report(&mut out, &e).unwrap();
insta::assert_snapshot!(format!("table__{}", path), out)
}
}
Err(e) => {
let handler = GraphicalReportHandler::new_themed(GraphicalTheme::unicode_nocolor());
let mut out = String::new();
handler.render_report(&mut out, &e).unwrap();
insta::assert_snapshot!(format!("table__{}", path), out)
}
}
});
}
#[test_case("tests/data/concrete.vmt")]
@ -258,5 +262,8 @@ fn test_serde_from_table(path: &str) {
let result = Table::load_from_str(&raw).unwrap();
let material: Expected = from_entry(result.into()).expect("table to material");
insta::assert_ron_snapshot!(format!("table_to_material__{}", path), material);
insta::with_settings!({sort_maps => true}, {
insta::assert_json_snapshot!(format!("table_to_material__{}", path), material);
});
}

View file

@ -12,8 +12,8 @@ expression: parsed
"0_collapsed": "0",
"1_collapsed": "0",
"2_collapsed": "0",
"3_collapsed": "0",
},
"3_collapsed": "0"
}
},
"FriendsFriendsPage": {
"BuddyList": {
@ -23,15 +23,15 @@ expression: parsed
"3_collapsed": "0",
"4_collapsed": "0",
"5_collapsed": "0",
"allfriends_collapsed": "0",
},
},
"allfriends_collapsed": "0"
}
}
},
"FriendsState": {},
"tall": "440",
"wide": "252",
"xpos": "1028",
"ypos": "280",
"ypos": "280"
},
"Servers": {
"DialogServerBrowser.res": {
@ -50,8 +50,8 @@ expression: parsed
"sort_column": "#ServerBrowser_Latency",
"sort_column_asc": "1",
"sort_column_secondary": "",
"sort_column_secondary_asc": "1",
},
"sort_column_secondary_asc": "1"
}
},
"FriendsGames": {
"gamelist": {
@ -67,8 +67,8 @@ expression: parsed
"sort_column": "#ServerBrowser_Latency",
"sort_column_asc": "1",
"sort_column_secondary": "",
"sort_column_secondary_asc": "1",
},
"sort_column_secondary_asc": "1"
}
},
"HistoryGames": {
"gamelist": {
@ -85,8 +85,8 @@ expression: parsed
"sort_column": "#ServerBrowser_LastPlayed",
"sort_column_asc": "1",
"sort_column_secondary": "#ServerBrowser_Latency",
"sort_column_secondary_asc": "1",
},
"sort_column_secondary_asc": "1"
}
},
"InternetGames": {
"gamelist": {
@ -102,8 +102,8 @@ expression: parsed
"sort_column": "#ServerBrowser_Latency",
"sort_column_asc": "1",
"sort_column_secondary": "",
"sort_column_secondary_asc": "1",
},
"sort_column_secondary_asc": "1"
}
},
"LanGames": {
"gamelist": {
@ -119,8 +119,8 @@ expression: parsed
"sort_column": "#ServerBrowser_Latency",
"sort_column_asc": "1",
"sort_column_secondary": "",
"sort_column_secondary_asc": "1",
},
"sort_column_secondary_asc": "1"
}
},
"SpectateGames": {
"gamelist": {
@ -136,20 +136,20 @@ expression: parsed
"sort_column": "#ServerBrowser_Latency",
"sort_column_asc": "1",
"sort_column_secondary": "",
"sort_column_secondary_asc": "1",
},
},
"sort_column_secondary_asc": "1"
}
}
},
"tall": "720",
"wide": "1280",
"xpos": "0",
"ypos": "0",
},
"ypos": "0"
}
},
"Steam": {
"cached": {
"OverlaySplash.res": {},
},
},
},
"OverlaySplash.res": {}
}
}
}
}

View file

@ -11,6 +11,6 @@ expression: parsed
"$detailblendmode": "0",
"$detailscale": "1.9",
"$ssbump": "1",
"%keywords": "tf",
},
"%keywords": "tf"
}
}

View file

@ -7,18 +7,18 @@ expression: parsed
"$envmaptint": [
".5",
".5",
".5",
".5"
],
"\\\\\"$translucent\"": "1",
"array": [
"1",
"2",
"3",
"3"
],
"bracket_string": "[{]",
"empty": "",
"empty quoted": "\"\"",
"ignored_bracket_string": "[{]",
"windows_path": "C:\\test\\no newline",
},
"windows_path": "C:\\test\\no newline"
}
}

View file

@ -4,5 +4,5 @@ expression: parsed
---
{
"bar": "asd",
"foo": "1",
"foo": "1"
}

View file

@ -12,4 +12,3 @@ vmt_parser::parse_serde
· ╰── Expected a bool
6 │ "%keywords" "tf"
╰────

View file

@ -11,4 +11,3 @@ vmt_reader::unexpected_token
· ┬
· ╰── Expected item, quoted item, statement, quoted statement, start of group
╰────

View file

@ -12,4 +12,3 @@ vmt_parser::parse_serde
· ╰── Expected a u8
3 │ flex_array "[1.0 2.2]"
╰────

View file

@ -12,8 +12,8 @@ expression: result
"0_collapsed": "0",
"1_collapsed": "0",
"2_collapsed": "0",
"3_collapsed": "0",
},
"3_collapsed": "0"
}
},
"FriendsFriendsPage": {
"BuddyList": {
@ -23,15 +23,15 @@ expression: result
"3_collapsed": "0",
"4_collapsed": "0",
"5_collapsed": "0",
"allfriends_collapsed": "0",
},
},
"allfriends_collapsed": "0"
}
}
},
"FriendsState": {},
"tall": "440",
"wide": "252",
"xpos": "1028",
"ypos": "280",
"ypos": "280"
},
"Servers": {
"DialogServerBrowser.res": {
@ -50,8 +50,8 @@ expression: result
"sort_column": "#ServerBrowser_Latency",
"sort_column_asc": "1",
"sort_column_secondary": "",
"sort_column_secondary_asc": "1",
},
"sort_column_secondary_asc": "1"
}
},
"FriendsGames": {
"gamelist": {
@ -67,8 +67,8 @@ expression: result
"sort_column": "#ServerBrowser_Latency",
"sort_column_asc": "1",
"sort_column_secondary": "",
"sort_column_secondary_asc": "1",
},
"sort_column_secondary_asc": "1"
}
},
"HistoryGames": {
"gamelist": {
@ -85,8 +85,8 @@ expression: result
"sort_column": "#ServerBrowser_LastPlayed",
"sort_column_asc": "1",
"sort_column_secondary": "#ServerBrowser_Latency",
"sort_column_secondary_asc": "1",
},
"sort_column_secondary_asc": "1"
}
},
"InternetGames": {
"gamelist": {
@ -102,8 +102,8 @@ expression: result
"sort_column": "#ServerBrowser_Latency",
"sort_column_asc": "1",
"sort_column_secondary": "",
"sort_column_secondary_asc": "1",
},
"sort_column_secondary_asc": "1"
}
},
"LanGames": {
"gamelist": {
@ -119,8 +119,8 @@ expression: result
"sort_column": "#ServerBrowser_Latency",
"sort_column_asc": "1",
"sort_column_secondary": "",
"sort_column_secondary_asc": "1",
},
"sort_column_secondary_asc": "1"
}
},
"SpectateGames": {
"gamelist": {
@ -136,20 +136,20 @@ expression: result
"sort_column": "#ServerBrowser_Latency",
"sort_column_asc": "1",
"sort_column_secondary": "",
"sort_column_secondary_asc": "1",
},
},
"sort_column_secondary_asc": "1"
}
}
},
"tall": "720",
"wide": "1280",
"xpos": "0",
"ypos": "0",
},
"ypos": "0"
}
},
"Steam": {
"cached": {
"OverlaySplash.res": {},
},
},
},
"OverlaySplash.res": {}
}
}
}
}

View file

@ -11,6 +11,6 @@ expression: result
"$detailblendmode": "0",
"$detailscale": "1.9",
"$ssbump": "1",
"%keywords": "tf",
},
"%keywords": "tf"
}
}

View file

@ -6,6 +6,6 @@ expression: result
"MapArray": {
"0": "foo",
"1": "bar",
"2": "asd",
},
"2": "asd"
}
}

View file

@ -8,11 +8,11 @@ expression: result
"fixed_array": [
"1",
"2",
"3",
"3"
],
"flex_array": [
"1",
"2.2",
"2.2"
],
"foo": "0",
"single": "1.2",
@ -20,11 +20,11 @@ expression: result
"triple": [
"1.2",
"1.3",
"1.4",
"1.4"
],
"tuple": [
"1",
"57",
],
},
"57"
]
}
}

View file

@ -4,5 +4,5 @@ expression: result
---
{
"bar": "asd",
"foo": "1",
"foo": "1"
}

View file

@ -2,151 +2,153 @@
source: tests/serde.rs
expression: material
---
UserConfigData(
Steam: UserConfigDataSteam(
cached: UserConfigDataSteamCached(
r#OverlaySplash.res: {},
),
),
FriendsMainDialog: {
"xpos": 1028,
"ypos": 280,
"wide": 252,
"tall": 440,
"FriendPanelSelf": {},
"FriendsDialogSheet": UserConfigDataFriendsMainDialogFriendsDialogSheet(
FriendsFriendsPage: UserConfigDataFriendsMainDialogFriendsDialogSheetFriendsPage(
BuddyList: {
"0_collapsed": false,
"1_collapsed": false,
"2_collapsed": false,
"3_collapsed": false,
"4_collapsed": false,
"5_collapsed": false,
"allfriends_collapsed": false,
},
),
FriendsClansPage: UserConfigDataFriendsMainDialogFriendsDialogSheetFriendsPage(
BuddyList: {
"0_collapsed": false,
"1_collapsed": false,
"2_collapsed": false,
"3_collapsed": false,
},
),
),
"FriendsState": {},
},
Servers: UserConfigDataServers(
r#DialogServerBrowser.res: {
"xpos": 0,
"ypos": 0,
"wide": 1280,
"tall": 720,
"GameTabs": UserConfigDataServersDialogGameTabs(
InternetGames: GameListHaver(
gamelist: GameList(
r##ServerBrowser_Password_hidden: false,
r##ServerBrowser_Bots_hidden: true,
r##ServerBrowser_Secure_hidden: false,
r##ServerBrowser_Servers_hidden: false,
r##ServerBrowser_IPAddress_hidden: true,
r##ServerBrowser_Game_hidden: false,
r##ServerBrowser_Players_hidden: false,
r##ServerBrowser_Map_hidden: false,
r##ServerBrowser_Latency_hidden: false,
sort_column: "#ServerBrowser_Latency",
sort_column_secondary: None,
sort_column_asc: true,
sort_column_secondary_asc: true,
),
),
FavoriteGames: GameListHaver(
gamelist: GameList(
r##ServerBrowser_Password_hidden: false,
r##ServerBrowser_Bots_hidden: true,
r##ServerBrowser_Secure_hidden: false,
r##ServerBrowser_Servers_hidden: false,
r##ServerBrowser_IPAddress_hidden: true,
r##ServerBrowser_Game_hidden: false,
r##ServerBrowser_Players_hidden: false,
r##ServerBrowser_Map_hidden: false,
r##ServerBrowser_Latency_hidden: false,
sort_column: "#ServerBrowser_Latency",
sort_column_secondary: None,
sort_column_asc: true,
sort_column_secondary_asc: true,
),
),
HistoryGames: GameListHaver(
gamelist: GameList(
r##ServerBrowser_Password_hidden: false,
r##ServerBrowser_Bots_hidden: true,
r##ServerBrowser_Secure_hidden: false,
r##ServerBrowser_Servers_hidden: false,
r##ServerBrowser_IPAddress_hidden: true,
r##ServerBrowser_Game_hidden: false,
r##ServerBrowser_Players_hidden: false,
r##ServerBrowser_Map_hidden: false,
r##ServerBrowser_Latency_hidden: false,
sort_column: "#ServerBrowser_LastPlayed",
sort_column_secondary: Some("#ServerBrowser_Latency"),
sort_column_asc: true,
sort_column_secondary_asc: true,
),
),
SpectateGames: GameListHaver(
gamelist: GameList(
r##ServerBrowser_Password_hidden: false,
r##ServerBrowser_Bots_hidden: true,
r##ServerBrowser_Secure_hidden: false,
r##ServerBrowser_Servers_hidden: false,
r##ServerBrowser_IPAddress_hidden: true,
r##ServerBrowser_Game_hidden: false,
r##ServerBrowser_Players_hidden: false,
r##ServerBrowser_Map_hidden: false,
r##ServerBrowser_Latency_hidden: false,
sort_column: "#ServerBrowser_Latency",
sort_column_secondary: None,
sort_column_asc: true,
sort_column_secondary_asc: true,
),
),
LanGames: GameListHaver(
gamelist: GameList(
r##ServerBrowser_Password_hidden: false,
r##ServerBrowser_Bots_hidden: true,
r##ServerBrowser_Secure_hidden: false,
r##ServerBrowser_Servers_hidden: false,
r##ServerBrowser_IPAddress_hidden: true,
r##ServerBrowser_Game_hidden: false,
r##ServerBrowser_Players_hidden: false,
r##ServerBrowser_Map_hidden: false,
r##ServerBrowser_Latency_hidden: false,
sort_column: "#ServerBrowser_Latency",
sort_column_secondary: None,
sort_column_asc: true,
sort_column_secondary_asc: true,
),
),
FriendsGames: GameListHaver(
gamelist: GameList(
r##ServerBrowser_Password_hidden: false,
r##ServerBrowser_Bots_hidden: true,
r##ServerBrowser_Secure_hidden: false,
r##ServerBrowser_Servers_hidden: false,
r##ServerBrowser_IPAddress_hidden: true,
r##ServerBrowser_Game_hidden: false,
r##ServerBrowser_Players_hidden: false,
r##ServerBrowser_Map_hidden: false,
r##ServerBrowser_Latency_hidden: false,
sort_column: "#ServerBrowser_Latency",
sort_column_secondary: None,
sort_column_asc: true,
sort_column_secondary_asc: true,
),
),
),
{
"UserConfigData": {
"Steam": {
"cached": {
"OverlaySplash.res": {}
}
},
),
)
"FriendsMainDialog": {
"FriendPanelSelf": {},
"FriendsDialogSheet": {
"FriendsFriendsPage": {
"BuddyList": {
"0_collapsed": false,
"1_collapsed": false,
"2_collapsed": false,
"3_collapsed": false,
"4_collapsed": false,
"5_collapsed": false,
"allfriends_collapsed": false
}
},
"FriendsClansPage": {
"BuddyList": {
"0_collapsed": false,
"1_collapsed": false,
"2_collapsed": false,
"3_collapsed": false
}
}
},
"FriendsState": {},
"tall": 440,
"wide": 252,
"xpos": 1028,
"ypos": 280
},
"Servers": {
"DialogServerBrowser.res": {
"GameTabs": {
"InternetGames": {
"gamelist": {
"#ServerBrowser_Password_hidden": false,
"#ServerBrowser_Bots_hidden": true,
"#ServerBrowser_Secure_hidden": false,
"#ServerBrowser_Servers_hidden": false,
"#ServerBrowser_IPAddress_hidden": true,
"#ServerBrowser_Game_hidden": false,
"#ServerBrowser_Players_hidden": false,
"#ServerBrowser_Map_hidden": false,
"#ServerBrowser_Latency_hidden": false,
"sort_column": "#ServerBrowser_Latency",
"sort_column_secondary": null,
"sort_column_asc": true,
"sort_column_secondary_asc": true
}
},
"FavoriteGames": {
"gamelist": {
"#ServerBrowser_Password_hidden": false,
"#ServerBrowser_Bots_hidden": true,
"#ServerBrowser_Secure_hidden": false,
"#ServerBrowser_Servers_hidden": false,
"#ServerBrowser_IPAddress_hidden": true,
"#ServerBrowser_Game_hidden": false,
"#ServerBrowser_Players_hidden": false,
"#ServerBrowser_Map_hidden": false,
"#ServerBrowser_Latency_hidden": false,
"sort_column": "#ServerBrowser_Latency",
"sort_column_secondary": null,
"sort_column_asc": true,
"sort_column_secondary_asc": true
}
},
"HistoryGames": {
"gamelist": {
"#ServerBrowser_Password_hidden": false,
"#ServerBrowser_Bots_hidden": true,
"#ServerBrowser_Secure_hidden": false,
"#ServerBrowser_Servers_hidden": false,
"#ServerBrowser_IPAddress_hidden": true,
"#ServerBrowser_Game_hidden": false,
"#ServerBrowser_Players_hidden": false,
"#ServerBrowser_Map_hidden": false,
"#ServerBrowser_Latency_hidden": false,
"sort_column": "#ServerBrowser_LastPlayed",
"sort_column_secondary": "#ServerBrowser_Latency",
"sort_column_asc": true,
"sort_column_secondary_asc": true
}
},
"SpectateGames": {
"gamelist": {
"#ServerBrowser_Password_hidden": false,
"#ServerBrowser_Bots_hidden": true,
"#ServerBrowser_Secure_hidden": false,
"#ServerBrowser_Servers_hidden": false,
"#ServerBrowser_IPAddress_hidden": true,
"#ServerBrowser_Game_hidden": false,
"#ServerBrowser_Players_hidden": false,
"#ServerBrowser_Map_hidden": false,
"#ServerBrowser_Latency_hidden": false,
"sort_column": "#ServerBrowser_Latency",
"sort_column_secondary": null,
"sort_column_asc": true,
"sort_column_secondary_asc": true
}
},
"LanGames": {
"gamelist": {
"#ServerBrowser_Password_hidden": false,
"#ServerBrowser_Bots_hidden": true,
"#ServerBrowser_Secure_hidden": false,
"#ServerBrowser_Servers_hidden": false,
"#ServerBrowser_IPAddress_hidden": true,
"#ServerBrowser_Game_hidden": false,
"#ServerBrowser_Players_hidden": false,
"#ServerBrowser_Map_hidden": false,
"#ServerBrowser_Latency_hidden": false,
"sort_column": "#ServerBrowser_Latency",
"sort_column_secondary": null,
"sort_column_asc": true,
"sort_column_secondary_asc": true
}
},
"FriendsGames": {
"gamelist": {
"#ServerBrowser_Password_hidden": false,
"#ServerBrowser_Bots_hidden": true,
"#ServerBrowser_Secure_hidden": false,
"#ServerBrowser_Servers_hidden": false,
"#ServerBrowser_IPAddress_hidden": true,
"#ServerBrowser_Game_hidden": false,
"#ServerBrowser_Players_hidden": false,
"#ServerBrowser_Map_hidden": false,
"#ServerBrowser_Latency_hidden": false,
"sort_column": "#ServerBrowser_Latency",
"sort_column_secondary": null,
"sort_column_asc": true,
"sort_column_secondary_asc": true
}
}
},
"tall": 720,
"wide": 1280,
"xpos": 0,
"ypos": 0
}
}
}
}

View file

@ -2,13 +2,15 @@
source: tests/serde.rs
expression: material
---
LightmappedGeneric(
r#$baseTexture: "cp_mountainlab/concrete/concretefloor003",
r#$bumpmap: "concrete/concretefloor007b_height-ssbump",
r#$ssbump: true,
r#%keywords: "tf",
r#$detail: "overlays/detail001",
r#$detailscale: 1.9,
r#$detailblendmode: 0,
r#$detailblendfactor: 1.0,
)
{
"LightmappedGeneric": {
"$baseTexture": "cp_mountainlab/concrete/concretefloor003",
"$bumpmap": "concrete/concretefloor007b_height-ssbump",
"$ssbump": true,
"%keywords": "tf",
"$detail": "overlays/detail001",
"$detailscale": 1.9,
"$detailblendmode": 0,
"$detailblendfactor": 1.0
}
}

View file

@ -2,8 +2,10 @@
source: tests/serde.rs
expression: material
---
MapArray([
"foo",
"bar",
"asd",
])
{
"MapArray": [
"foo",
"bar",
"asd"
]
}

View file

@ -2,15 +2,21 @@
source: tests/serde.rs
expression: material
---
r#Resource/specificPanel.res(
empty: (),
array: [
1,
2,
3,
],
windows_path: "C:\\test\\no newline",
bracket_string: "[{]",
r#\\"$translucent": true,
r#$envmaptint: (0.5, 0.5, 0.5),
)
{
"Resource/specificPanel.res": {
"empty": null,
"array": [
1,
2,
3
],
"windows_path": "C:\\test\\no newline",
"bracket_string": "[{]",
"\\\\\"$translucent\"": true,
"$envmaptint": [
0.5,
0.5,
0.5
]
}
}

View file

@ -2,15 +2,32 @@
source: tests/serde.rs
expression: material
---
Types(
fixed_array: (1, 2, 3),
flex_array: [
1.0,
2.2,
],
tuple: (true, 57),
single: 1.2,
triple: (1.2, 1.3, 1.4),
single_int: 2.0,
another_tuple: (8, "foo", false),
)
{
"Types": {
"fixed_array": [
1,
2,
3
],
"flex_array": [
1.0,
2.2
],
"tuple": [
true,
57
],
"single": 1.2,
"triple": [
1.2,
1.3,
1.4
],
"single_int": 2.0,
"another_tuple": [
8,
"foo",
false
]
}
}

View file

@ -2,151 +2,153 @@
source: tests/serde.rs
expression: result
---
UserConfigData(
Steam: UserConfigDataSteam(
cached: UserConfigDataSteamCached(
r#OverlaySplash.res: {},
),
),
FriendsMainDialog: {
"xpos": 1028,
"ypos": 280,
"wide": 252,
"tall": 440,
"FriendPanelSelf": {},
"FriendsDialogSheet": UserConfigDataFriendsMainDialogFriendsDialogSheet(
FriendsFriendsPage: UserConfigDataFriendsMainDialogFriendsDialogSheetFriendsPage(
BuddyList: {
"0_collapsed": false,
"1_collapsed": false,
"2_collapsed": false,
"3_collapsed": false,
"4_collapsed": false,
"5_collapsed": false,
"allfriends_collapsed": false,
},
),
FriendsClansPage: UserConfigDataFriendsMainDialogFriendsDialogSheetFriendsPage(
BuddyList: {
"0_collapsed": false,
"1_collapsed": false,
"2_collapsed": false,
"3_collapsed": false,
},
),
),
"FriendsState": {},
},
Servers: UserConfigDataServers(
r#DialogServerBrowser.res: {
"xpos": 0,
"ypos": 0,
"wide": 1280,
"tall": 720,
"GameTabs": UserConfigDataServersDialogGameTabs(
InternetGames: GameListHaver(
gamelist: GameList(
r##ServerBrowser_Password_hidden: false,
r##ServerBrowser_Bots_hidden: true,
r##ServerBrowser_Secure_hidden: false,
r##ServerBrowser_Servers_hidden: false,
r##ServerBrowser_IPAddress_hidden: true,
r##ServerBrowser_Game_hidden: false,
r##ServerBrowser_Players_hidden: false,
r##ServerBrowser_Map_hidden: false,
r##ServerBrowser_Latency_hidden: false,
sort_column: "#ServerBrowser_Latency",
sort_column_secondary: Some(""),
sort_column_asc: true,
sort_column_secondary_asc: true,
),
),
FavoriteGames: GameListHaver(
gamelist: GameList(
r##ServerBrowser_Password_hidden: false,
r##ServerBrowser_Bots_hidden: true,
r##ServerBrowser_Secure_hidden: false,
r##ServerBrowser_Servers_hidden: false,
r##ServerBrowser_IPAddress_hidden: true,
r##ServerBrowser_Game_hidden: false,
r##ServerBrowser_Players_hidden: false,
r##ServerBrowser_Map_hidden: false,
r##ServerBrowser_Latency_hidden: false,
sort_column: "#ServerBrowser_Latency",
sort_column_secondary: Some(""),
sort_column_asc: true,
sort_column_secondary_asc: true,
),
),
HistoryGames: GameListHaver(
gamelist: GameList(
r##ServerBrowser_Password_hidden: false,
r##ServerBrowser_Bots_hidden: true,
r##ServerBrowser_Secure_hidden: false,
r##ServerBrowser_Servers_hidden: false,
r##ServerBrowser_IPAddress_hidden: true,
r##ServerBrowser_Game_hidden: false,
r##ServerBrowser_Players_hidden: false,
r##ServerBrowser_Map_hidden: false,
r##ServerBrowser_Latency_hidden: false,
sort_column: "#ServerBrowser_LastPlayed",
sort_column_secondary: Some("#ServerBrowser_Latency"),
sort_column_asc: true,
sort_column_secondary_asc: true,
),
),
SpectateGames: GameListHaver(
gamelist: GameList(
r##ServerBrowser_Password_hidden: false,
r##ServerBrowser_Bots_hidden: true,
r##ServerBrowser_Secure_hidden: false,
r##ServerBrowser_Servers_hidden: false,
r##ServerBrowser_IPAddress_hidden: true,
r##ServerBrowser_Game_hidden: false,
r##ServerBrowser_Players_hidden: false,
r##ServerBrowser_Map_hidden: false,
r##ServerBrowser_Latency_hidden: false,
sort_column: "#ServerBrowser_Latency",
sort_column_secondary: Some(""),
sort_column_asc: true,
sort_column_secondary_asc: true,
),
),
LanGames: GameListHaver(
gamelist: GameList(
r##ServerBrowser_Password_hidden: false,
r##ServerBrowser_Bots_hidden: true,
r##ServerBrowser_Secure_hidden: false,
r##ServerBrowser_Servers_hidden: false,
r##ServerBrowser_IPAddress_hidden: true,
r##ServerBrowser_Game_hidden: false,
r##ServerBrowser_Players_hidden: false,
r##ServerBrowser_Map_hidden: false,
r##ServerBrowser_Latency_hidden: false,
sort_column: "#ServerBrowser_Latency",
sort_column_secondary: Some(""),
sort_column_asc: true,
sort_column_secondary_asc: true,
),
),
FriendsGames: GameListHaver(
gamelist: GameList(
r##ServerBrowser_Password_hidden: false,
r##ServerBrowser_Bots_hidden: true,
r##ServerBrowser_Secure_hidden: false,
r##ServerBrowser_Servers_hidden: false,
r##ServerBrowser_IPAddress_hidden: true,
r##ServerBrowser_Game_hidden: false,
r##ServerBrowser_Players_hidden: false,
r##ServerBrowser_Map_hidden: false,
r##ServerBrowser_Latency_hidden: false,
sort_column: "#ServerBrowser_Latency",
sort_column_secondary: Some(""),
sort_column_asc: true,
sort_column_secondary_asc: true,
),
),
),
{
"UserConfigData": {
"Steam": {
"cached": {
"OverlaySplash.res": {}
}
},
),
)
"FriendsMainDialog": {
"FriendPanelSelf": {},
"FriendsDialogSheet": {
"FriendsFriendsPage": {
"BuddyList": {
"0_collapsed": false,
"1_collapsed": false,
"2_collapsed": false,
"3_collapsed": false,
"4_collapsed": false,
"5_collapsed": false,
"allfriends_collapsed": false
}
},
"FriendsClansPage": {
"BuddyList": {
"0_collapsed": false,
"1_collapsed": false,
"2_collapsed": false,
"3_collapsed": false
}
}
},
"FriendsState": {},
"tall": 440,
"wide": 252,
"xpos": 1028,
"ypos": 280
},
"Servers": {
"DialogServerBrowser.res": {
"GameTabs": {
"InternetGames": {
"gamelist": {
"#ServerBrowser_Password_hidden": false,
"#ServerBrowser_Bots_hidden": true,
"#ServerBrowser_Secure_hidden": false,
"#ServerBrowser_Servers_hidden": false,
"#ServerBrowser_IPAddress_hidden": true,
"#ServerBrowser_Game_hidden": false,
"#ServerBrowser_Players_hidden": false,
"#ServerBrowser_Map_hidden": false,
"#ServerBrowser_Latency_hidden": false,
"sort_column": "#ServerBrowser_Latency",
"sort_column_secondary": "",
"sort_column_asc": true,
"sort_column_secondary_asc": true
}
},
"FavoriteGames": {
"gamelist": {
"#ServerBrowser_Password_hidden": false,
"#ServerBrowser_Bots_hidden": true,
"#ServerBrowser_Secure_hidden": false,
"#ServerBrowser_Servers_hidden": false,
"#ServerBrowser_IPAddress_hidden": true,
"#ServerBrowser_Game_hidden": false,
"#ServerBrowser_Players_hidden": false,
"#ServerBrowser_Map_hidden": false,
"#ServerBrowser_Latency_hidden": false,
"sort_column": "#ServerBrowser_Latency",
"sort_column_secondary": "",
"sort_column_asc": true,
"sort_column_secondary_asc": true
}
},
"HistoryGames": {
"gamelist": {
"#ServerBrowser_Password_hidden": false,
"#ServerBrowser_Bots_hidden": true,
"#ServerBrowser_Secure_hidden": false,
"#ServerBrowser_Servers_hidden": false,
"#ServerBrowser_IPAddress_hidden": true,
"#ServerBrowser_Game_hidden": false,
"#ServerBrowser_Players_hidden": false,
"#ServerBrowser_Map_hidden": false,
"#ServerBrowser_Latency_hidden": false,
"sort_column": "#ServerBrowser_LastPlayed",
"sort_column_secondary": "#ServerBrowser_Latency",
"sort_column_asc": true,
"sort_column_secondary_asc": true
}
},
"SpectateGames": {
"gamelist": {
"#ServerBrowser_Password_hidden": false,
"#ServerBrowser_Bots_hidden": true,
"#ServerBrowser_Secure_hidden": false,
"#ServerBrowser_Servers_hidden": false,
"#ServerBrowser_IPAddress_hidden": true,
"#ServerBrowser_Game_hidden": false,
"#ServerBrowser_Players_hidden": false,
"#ServerBrowser_Map_hidden": false,
"#ServerBrowser_Latency_hidden": false,
"sort_column": "#ServerBrowser_Latency",
"sort_column_secondary": "",
"sort_column_asc": true,
"sort_column_secondary_asc": true
}
},
"LanGames": {
"gamelist": {
"#ServerBrowser_Password_hidden": false,
"#ServerBrowser_Bots_hidden": true,
"#ServerBrowser_Secure_hidden": false,
"#ServerBrowser_Servers_hidden": false,
"#ServerBrowser_IPAddress_hidden": true,
"#ServerBrowser_Game_hidden": false,
"#ServerBrowser_Players_hidden": false,
"#ServerBrowser_Map_hidden": false,
"#ServerBrowser_Latency_hidden": false,
"sort_column": "#ServerBrowser_Latency",
"sort_column_secondary": "",
"sort_column_asc": true,
"sort_column_secondary_asc": true
}
},
"FriendsGames": {
"gamelist": {
"#ServerBrowser_Password_hidden": false,
"#ServerBrowser_Bots_hidden": true,
"#ServerBrowser_Secure_hidden": false,
"#ServerBrowser_Servers_hidden": false,
"#ServerBrowser_IPAddress_hidden": true,
"#ServerBrowser_Game_hidden": false,
"#ServerBrowser_Players_hidden": false,
"#ServerBrowser_Map_hidden": false,
"#ServerBrowser_Latency_hidden": false,
"sort_column": "#ServerBrowser_Latency",
"sort_column_secondary": "",
"sort_column_asc": true,
"sort_column_secondary_asc": true
}
}
},
"tall": 720,
"wide": 1280,
"xpos": 0,
"ypos": 0
}
}
}
}

View file

@ -2,13 +2,15 @@
source: tests/serde.rs
expression: result
---
LightmappedGeneric(
r#$baseTexture: "cp_mountainlab/concrete/concretefloor003",
r#$bumpmap: "concrete/concretefloor007b_height-ssbump",
r#$ssbump: true,
r#%keywords: "tf",
r#$detail: "overlays/detail001",
r#$detailscale: 1.9,
r#$detailblendmode: 0,
r#$detailblendfactor: 1.0,
)
{
"LightmappedGeneric": {
"$baseTexture": "cp_mountainlab/concrete/concretefloor003",
"$bumpmap": "concrete/concretefloor007b_height-ssbump",
"$ssbump": true,
"%keywords": "tf",
"$detail": "overlays/detail001",
"$detailscale": 1.9,
"$detailblendmode": 0,
"$detailblendfactor": 1.0
}
}

View file

@ -2,8 +2,12 @@
source: tests/serde.rs
expression: result
---
EnumInMap(
foo: bar(
a: true,
),
)
{
"EnumInMap": {
"foo": {
"bar": {
"a": true
}
}
}
}

View file

@ -2,9 +2,14 @@
source: tests/serde.rs
expression: result
---
Sprite(
r#$spriteorientation: vp_parallel,
r#$spriteorigin: (0.5, 0.5),
r#$basetexture: "editor/game_text",
r#$no_fullbright: true,
)
{
"Sprite": {
"$spriteorientation": "vp_parallel",
"$spriteorigin": [
0.5,
0.5
],
"$basetexture": "editor/game_text",
"$no_fullbright": true
}
}

View file

@ -1,16 +0,0 @@
---
source: tests/serde.rs
expression: out
---
vmt_reader::unexpected_token
× invalid type: boolean `true`, expected u32
╭─[6:9]
5 │ }
6 │ ╭─▶ data2 {
7 │ │ kind Bar
8 │ │ val1 1
9 │ ├─▶ }
· ╰──── invalid type: boolean `true`, expected u32
10 │ }
╰────

View file

@ -2,8 +2,10 @@
source: tests/serde.rs
expression: result
---
MapArray([
"foo",
"bar",
"asd",
])
{
"MapArray": [
"foo",
"bar",
"asd"
]
}

View file

@ -2,15 +2,21 @@
source: tests/serde.rs
expression: result
---
r#Resource/specificPanel.res(
empty: (),
array: [
1,
2,
3,
],
windows_path: "C:\\test\\no newline",
bracket_string: "[{]",
r#\\"$translucent": true,
r#$envmaptint: (0.5, 0.5, 0.5),
)
{
"Resource/specificPanel.res": {
"empty": null,
"array": [
1,
2,
3
],
"windows_path": "C:\\test\\no newline",
"bracket_string": "[{]",
"\\\\\"$translucent\"": true,
"$envmaptint": [
0.5,
0.5,
0.5
]
}
}

View file

@ -2,15 +2,32 @@
source: tests/serde.rs
expression: result
---
Types(
fixed_array: (1, 2, 3),
flex_array: [
1.0,
2.2,
],
tuple: (true, 57),
single: 1.2,
triple: (1.2, 1.3, 1.4),
single_int: 2.0,
another_tuple: (8, "foo", false),
)
{
"Types": {
"fixed_array": [
1,
2,
3
],
"flex_array": [
1.0,
2.2
],
"tuple": [
true,
57
],
"single": 1.2,
"triple": [
1.2,
1.3,
1.4
],
"single_int": 2.0,
"another_tuple": [
8,
"foo",
false
]
}
}