[{"data":1,"prerenderedAt":987},["ShallowReactive",2],{"navigation":3,"\u002Fstructs\u002Fparse-vs-validate":335,"\u002Fstructs\u002Fparse-vs-validate-surround":982},[4,27,73,95,121,135,305,331],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18,22],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":23,"path":24,"stem":25},"MSRV","\u002Fgetting-started\u002Fmsrv","1.getting-started\u002F9.msrv",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Schemas","i-lucide-shapes","\u002Fschemas","2.schemas",[33,37,41,45,49,53,57,61,65,69],{"title":34,"path":35,"stem":36},"Strings","\u002Fschemas\u002Fstrings","2.schemas\u002F1.strings",{"title":38,"path":39,"stem":40},"Custom rules","\u002Fschemas\u002Frules","2.schemas\u002F10.rules",{"title":42,"path":43,"stem":44},"Numbers","\u002Fschemas\u002Fnumbers","2.schemas\u002F2.numbers",{"title":46,"path":47,"stem":48},"Booleans, literals and enums","\u002Fschemas\u002Fprimitives","2.schemas\u002F3.primitives",{"title":50,"path":51,"stem":52},"Dates and times","\u002Fschemas\u002Fdates","2.schemas\u002F4.dates",{"title":54,"path":55,"stem":56},"Collections","\u002Fschemas\u002Fcollections","2.schemas\u002F5.collections",{"title":58,"path":59,"stem":60},"Dynamic objects","\u002Fschemas\u002Fobjects","2.schemas\u002F6.objects",{"title":62,"path":63,"stem":64},"Modifiers","\u002Fschemas\u002Fmodifiers","2.schemas\u002F7.modifiers",{"title":66,"path":67,"stem":68},"Combinators","\u002Fschemas\u002Fcombinators","2.schemas\u002F8.combinators",{"title":70,"path":71,"stem":72},"Other types","\u002Fschemas\u002Fspecial-types","2.schemas\u002F9.special-types",{"title":74,"icon":75,"path":76,"stem":77,"children":78,"page":26},"Structs","i-lucide-braces","\u002Fstructs","3.structs",[79,83,87,91],{"title":80,"path":81,"stem":82},"schema! macro","\u002Fstructs\u002Fschema-macro","3.structs\u002F1.schema-macro",{"title":84,"path":85,"stem":86},"#[derive(Validate)]","\u002Fstructs\u002Fderive","3.structs\u002F2.derive",{"title":88,"path":89,"stem":90},"Parse vs validate","\u002Fstructs\u002Fparse-vs-validate","3.structs\u002F3.parse-vs-validate",{"title":92,"path":93,"stem":94},"Lenient parsing","\u002Fstructs\u002Flenient","3.structs\u002F4.lenient",{"title":96,"icon":97,"path":98,"stem":99,"children":100,"page":26},"Errors","i-lucide-triangle-alert","\u002Ferrors","4.errors",[101,105,109,113,117],{"title":102,"path":103,"stem":104},"Error model","\u002Ferrors\u002Foverview","4.errors\u002F1.overview",{"title":106,"path":107,"stem":108},"Issue codes","\u002Ferrors\u002Fissue-codes","4.errors\u002F2.issue-codes",{"title":110,"path":111,"stem":112},"Formatting","\u002Ferrors\u002Fformatting","4.errors\u002F3.formatting",{"title":114,"path":115,"stem":116},"Custom messages","\u002Ferrors\u002Fcustom-messages","4.errors\u002F4.custom-messages",{"title":118,"path":119,"stem":120},"Translations","\u002Ferrors\u002Fi18n","4.errors\u002F5.i18n",{"title":122,"icon":123,"path":124,"stem":125,"children":126,"page":26},"OpenAPI","i-lucide-file-json","\u002Fopenapi","5.openapi",[127,131],{"title":128,"path":129,"stem":130},"JSON Schema and OpenAPI","\u002Fopenapi\u002Fjson-schema","5.openapi\u002F1.json-schema",{"title":132,"path":133,"stem":134},"Schema diff","\u002Fopenapi\u002Fdiff","5.openapi\u002F2.diff",{"title":136,"icon":137,"path":138,"stem":139,"children":140,"page":26},"Integrations","i-lucide-plug","\u002Fintegrations","6.integrations",[141,191,209,223,245,259,273,291],{"title":142,"icon":143,"path":144,"stem":145,"children":146,"page":26},"Web frameworks","i-lucide-globe","\u002Fintegrations\u002Fweb","6.integrations\u002F1.web",[147,151,155,159,163,167,171,175,179,183,187],{"title":148,"path":149,"stem":150},"Web adapters overview","\u002Fintegrations\u002Fweb\u002Foverview","6.integrations\u002F1.web\u002F01.overview",{"title":152,"path":153,"stem":154},"vld-axum","\u002Fintegrations\u002Fweb\u002Faxum","6.integrations\u002F1.web\u002F02.axum",{"title":156,"path":157,"stem":158},"vld-actix","\u002Fintegrations\u002Fweb\u002Factix","6.integrations\u002F1.web\u002F03.actix",{"title":160,"path":161,"stem":162},"vld-ntex","\u002Fintegrations\u002Fweb\u002Fntex","6.integrations\u002F1.web\u002F04.ntex",{"title":164,"path":165,"stem":166},"vld-poem","\u002Fintegrations\u002Fweb\u002Fpoem","6.integrations\u002F1.web\u002F05.poem",{"title":168,"path":169,"stem":170},"vld-rama","\u002Fintegrations\u002Fweb\u002Frama","6.integrations\u002F1.web\u002F06.rama",{"title":172,"path":173,"stem":174},"vld-rocket","\u002Fintegrations\u002Fweb\u002Frocket","6.integrations\u002F1.web\u002F07.rocket",{"title":176,"path":177,"stem":178},"vld-salvo","\u002Fintegrations\u002Fweb\u002Fsalvo","6.integrations\u002F1.web\u002F08.salvo",{"title":180,"path":181,"stem":182},"vld-tower","\u002Fintegrations\u002Fweb\u002Ftower","6.integrations\u002F1.web\u002F09.tower",{"title":184,"path":185,"stem":186},"vld-warp","\u002Fintegrations\u002Fweb\u002Fwarp","6.integrations\u002F1.web\u002F10.warp",{"title":188,"path":189,"stem":190},"vld-tonic","\u002Fintegrations\u002Fweb\u002Ftonic","6.integrations\u002F1.web\u002F11.tonic",{"title":192,"icon":193,"path":194,"stem":195,"children":196,"page":26},"OpenAPI and JSON Schema","i-lucide-file-code","\u002Fintegrations\u002Fopenapi","6.integrations\u002F2.openapi",[197,201,205],{"title":198,"path":199,"stem":200},"vld-utoipa","\u002Fintegrations\u002Fopenapi\u002Futoipa","6.integrations\u002F2.openapi\u002F1.utoipa",{"title":202,"path":203,"stem":204},"vld-schemars","\u002Fintegrations\u002Fopenapi\u002Fschemars","6.integrations\u002F2.openapi\u002F2.schemars",{"title":206,"path":207,"stem":208},"vld-aide","\u002Fintegrations\u002Fopenapi\u002Faide","6.integrations\u002F2.openapi\u002F3.aide",{"title":210,"icon":211,"path":212,"stem":213,"children":214,"page":26},"Codegen and test data","i-lucide-wand","\u002Fintegrations\u002Fcodegen","6.integrations\u002F3.codegen",[215,219],{"title":216,"path":217,"stem":218},"vld-ts","\u002Fintegrations\u002Fcodegen\u002Fts","6.integrations\u002F3.codegen\u002F1.ts",{"title":220,"path":221,"stem":222},"vld-fake","\u002Fintegrations\u002Fcodegen\u002Ffake","6.integrations\u002F3.codegen\u002F2.fake",{"title":224,"icon":225,"path":226,"stem":227,"children":228,"page":26},"Databases","i-lucide-database","\u002Fintegrations\u002Fdatabase","6.integrations\u002F4.database",[229,233,237,241],{"title":230,"path":231,"stem":232},"vld-sqlx","\u002Fintegrations\u002Fdatabase\u002Fsqlx","6.integrations\u002F4.database\u002F1.sqlx",{"title":234,"path":235,"stem":236},"vld-diesel","\u002Fintegrations\u002Fdatabase\u002Fdiesel","6.integrations\u002F4.database\u002F2.diesel",{"title":238,"path":239,"stem":240},"vld-sea","\u002Fintegrations\u002Fdatabase\u002Fsea-orm","6.integrations\u002F4.database\u002F3.sea-orm",{"title":242,"path":243,"stem":244},"vld-surrealdb","\u002Fintegrations\u002Fdatabase\u002Fsurrealdb","6.integrations\u002F4.database\u002F4.surrealdb",{"title":246,"icon":247,"path":248,"stem":249,"children":250,"page":26},"Messaging","i-lucide-mail","\u002Fintegrations\u002Fmessaging","6.integrations\u002F5.messaging",[251,255],{"title":252,"path":253,"stem":254},"vld-redis","\u002Fintegrations\u002Fmessaging\u002Fredis","6.integrations\u002F5.messaging\u002F1.redis",{"title":256,"path":257,"stem":258},"vld-lapin","\u002Fintegrations\u002Fmessaging\u002Flapin","6.integrations\u002F5.messaging\u002F2.lapin",{"title":260,"icon":261,"path":262,"stem":263,"children":264,"page":26},"Config and CLI","i-lucide-terminal","\u002Fintegrations\u002Fconfig-cli","6.integrations\u002F6.config-cli",[265,269],{"title":266,"path":267,"stem":268},"vld-config","\u002Fintegrations\u002Fconfig-cli\u002Fconfig","6.integrations\u002F6.config-cli\u002F1.config",{"title":270,"path":271,"stem":272},"vld-clap","\u002Fintegrations\u002Fconfig-cli\u002Fclap","6.integrations\u002F6.config-cli\u002F2.clap",{"title":274,"icon":275,"path":276,"stem":277,"children":278,"page":26},"UI frameworks","i-lucide-monitor","\u002Fintegrations\u002Fui","6.integrations\u002F7.ui",[279,283,287],{"title":280,"path":281,"stem":282},"vld-dioxus","\u002Fintegrations\u002Fui\u002Fdioxus","6.integrations\u002F7.ui\u002F1.dioxus",{"title":284,"path":285,"stem":286},"vld-leptos","\u002Fintegrations\u002Fui\u002Fleptos","6.integrations\u002F7.ui\u002F2.leptos",{"title":288,"path":289,"stem":290},"vld-tauri","\u002Fintegrations\u002Fui\u002Ftauri","6.integrations\u002F7.ui\u002F3.tauri",{"title":292,"icon":293,"path":294,"stem":295,"children":296,"page":26},"Shared crates","i-lucide-package","\u002Fintegrations\u002Fshared","6.integrations\u002F8.shared",[297,301],{"title":298,"path":299,"stem":300},"vld-http-common","\u002Fintegrations\u002Fshared\u002Fhttp-common","6.integrations\u002F8.shared\u002F1.http-common",{"title":302,"path":303,"stem":304},"vld-integration-common","\u002Fintegrations\u002Fshared\u002Fintegration-common","6.integrations\u002F8.shared\u002F2.integration-common",{"title":306,"icon":307,"path":308,"stem":309,"children":310,"page":26},"Guides","i-lucide-book-open","\u002Fguides","7.guides",[311,315,319,323,327],{"title":312,"path":313,"stem":314},"Migration","\u002Fguides\u002Fmigration","7.guides\u002F1.migration",{"title":316,"path":317,"stem":318},"Security notes","\u002Fguides\u002Fsecurity","7.guides\u002F2.security",{"title":320,"path":321,"stem":322},"Performance","\u002Fguides\u002Fperformance","7.guides\u002F3.performance",{"title":324,"path":325,"stem":326},"Contributing","\u002Fguides\u002Fcontributing","7.guides\u002F4.contributing",{"title":328,"path":329,"stem":330},"FAQ","\u002Fguides\u002Ffaq","7.guides\u002F5.faq",{"title":332,"path":333,"stem":334},"Changelog","\u002Fchangelog","9.changelog",{"id":336,"title":88,"body":337,"description":976,"extension":977,"links":978,"meta":979,"navigation":488,"path":89,"seo":980,"stem":90,"__hash__":981},"docs\u002F3.structs\u002F3.parse-vs-validate.md",{"type":338,"value":339,"toc":974},"minimark",[340,352,451,829,844,854,946,970],[341,342,343,344,348,349,351],"p",{},"Structs from ",[345,346,347],"code",{},"schema!"," and ",[345,350,84],{}," can be checked in two directions.",[353,354,355,384],"table",{},[356,357,358],"thead",{},[359,360,361,364,376],"tr",{},[362,363],"th",{},[362,365,366,369,370,369,373],{},[345,367,368],{},"parse"," \u002F ",[345,371,372],{},"parse_value",[345,374,375],{},"vld_parse",[362,377,378,369,381],{},[345,379,380],{},"validate",[345,382,383],{},"is_valid",[385,386,387,406,423,440],"tbody",{},[359,388,389,393,400],{},[390,391,392],"td",{},"Input",[390,394,395,396,399],{},"JSON (string, bytes, file, ",[345,397,398],{},"Value",")",[390,401,402,403],{},"an existing Rust value that implements ",[345,404,405],{},"Serialize",[359,407,408,411,414],{},[390,409,410],{},"Output",[390,412,413],{},"a new struct, with transforms and defaults applied",[390,415,416,419,420],{},[345,417,418],{},"Ok(())"," or ",[345,421,422],{},"Err(VldError)",[359,424,425,428,435],{},[390,426,427],{},"Field names",[390,429,430,434],{},[431,432,433],"strong",{},"deserialize"," names",[390,436,437,434],{},[431,438,439],{},"serialize",[359,441,442,445,448],{},[390,443,444],{},"Typical use",[390,446,447],{},"request bodies, config files, messages",[390,449,450],{},"data built in code, before saving or sending",[452,453,458],"pre",{"className":454,"code":455,"language":456,"meta":457,"style":457},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use vld::prelude::*;\n\nvld::schema! {\n    #[derive(Debug, serde::Serialize)]\n    pub struct Account {\n        pub email: String => vld::string().email(),\n        pub balance: f64 => vld::number().non_negative(),\n    }\n}\n\n\u002F\u002F Incoming data:\nlet acc = Account::parse(r#\"{\"email\": \"ada@example.com\", \"balance\": 10}\"#).unwrap();\n\n\u002F\u002F Data changed in code:\nlet mut changed = acc;\nchanged.balance -= 25.0;\nassert!(!Account::is_valid(&changed));\nlet err = Account::validate(&changed).unwrap_err();\nassert_eq!(err.issues[0].code.key(), \"too_small\");\n","rust","",[345,459,460,483,490,504,533,548,582,611,617,623,628,635,677,682,688,707,732,756,783],{"__ignoreMap":457},[461,462,465,469,473,477,480],"span",{"class":463,"line":464},"line",1,[461,466,468],{"class":467},"sbssI","use",[461,470,472],{"class":471},"sBMFI"," vld",[461,474,476],{"class":475},"sMK4o","::",[461,478,479],{"class":471},"prelude",[461,481,482],{"class":475},"::*;\n",[461,484,486],{"class":463,"line":485},2,[461,487,489],{"emptyLinePlaceholder":488},true,"\n",[461,491,493,496,498,501],{"class":463,"line":492},3,[461,494,495],{"class":471},"vld",[461,497,476],{"class":475},[461,499,347],{"class":500},"s2Zo4",[461,502,503],{"class":475}," {\n",[461,505,507,510,514,517,520,523,526,528,530],{"class":463,"line":506},4,[461,508,509],{"class":475},"    #[",[461,511,513],{"class":512},"sTEyZ","derive",[461,515,516],{"class":475},"(",[461,518,519],{"class":471},"Debug",[461,521,522],{"class":475},",",[461,524,525],{"class":512}," serde",[461,527,476],{"class":475},[461,529,405],{"class":471},[461,531,532],{"class":475},")]\n",[461,534,536,540,543,546],{"class":463,"line":535},5,[461,537,539],{"class":538},"spNyl","    pub",[461,541,542],{"class":538}," struct",[461,544,545],{"class":471}," Account",[461,547,503],{"class":475},[461,549,551,554,557,560,563,566,568,570,573,576,579],{"class":463,"line":550},6,[461,552,553],{"class":538},"        pub",[461,555,556],{"class":512}," email",[461,558,559],{"class":475},":",[461,561,562],{"class":471}," String",[461,564,565],{"class":475}," =>",[461,567,472],{"class":471},[461,569,476],{"class":475},[461,571,572],{"class":500},"string",[461,574,575],{"class":475},"().",[461,577,578],{"class":500},"email",[461,580,581],{"class":475},"(),\n",[461,583,585,587,590,592,595,597,599,601,604,606,609],{"class":463,"line":584},7,[461,586,553],{"class":538},[461,588,589],{"class":512}," balance",[461,591,559],{"class":475},[461,593,594],{"class":471}," f64",[461,596,565],{"class":475},[461,598,472],{"class":471},[461,600,476],{"class":475},[461,602,603],{"class":500},"number",[461,605,575],{"class":475},[461,607,608],{"class":500},"non_negative",[461,610,581],{"class":475},[461,612,614],{"class":463,"line":613},8,[461,615,616],{"class":475},"    }\n",[461,618,620],{"class":463,"line":619},9,[461,621,622],{"class":475},"}\n",[461,624,626],{"class":463,"line":625},10,[461,627,489],{"emptyLinePlaceholder":488},[461,629,631],{"class":463,"line":630},11,[461,632,634],{"class":633},"sHwdD","\u002F\u002F Incoming data:\n",[461,636,638,641,644,647,649,651,653,655,659,662,665,668,671,674],{"class":463,"line":637},12,[461,639,640],{"class":538},"let",[461,642,643],{"class":512}," acc ",[461,645,646],{"class":475},"=",[461,648,545],{"class":471},[461,650,476],{"class":475},[461,652,368],{"class":500},[461,654,516],{"class":475},[461,656,658],{"class":657},"sfazB","r",[461,660,661],{"class":475},"#\"",[461,663,664],{"class":657},"{\"email\": \"ada@example.com\", \"balance\": 10}",[461,666,667],{"class":475},"\"#",[461,669,670],{"class":475},").",[461,672,673],{"class":500},"unwrap",[461,675,676],{"class":475},"();\n",[461,678,680],{"class":463,"line":679},13,[461,681,489],{"emptyLinePlaceholder":488},[461,683,685],{"class":463,"line":684},14,[461,686,687],{"class":633},"\u002F\u002F Data changed in code:\n",[461,689,691,693,696,699,701,704],{"class":463,"line":690},15,[461,692,640],{"class":538},[461,694,695],{"class":538}," mut",[461,697,698],{"class":512}," changed ",[461,700,646],{"class":475},[461,702,703],{"class":512}," acc",[461,705,706],{"class":475},";\n",[461,708,710,713,716,719,722,725,727,730],{"class":463,"line":709},16,[461,711,712],{"class":512},"changed",[461,714,715],{"class":475},".",[461,717,718],{"class":512},"balance ",[461,720,721],{"class":475},"-=",[461,723,724],{"class":467}," 25",[461,726,715],{"class":475},[461,728,729],{"class":467},"0",[461,731,706],{"class":475},[461,733,735,738,741,744,746,748,751,753],{"class":463,"line":734},17,[461,736,737],{"class":500},"assert!",[461,739,740],{"class":475},"(!",[461,742,743],{"class":471},"Account",[461,745,476],{"class":475},[461,747,383],{"class":500},[461,749,750],{"class":475},"(&",[461,752,712],{"class":512},[461,754,755],{"class":475},"));\n",[461,757,759,761,764,766,768,770,772,774,776,778,781],{"class":463,"line":758},18,[461,760,640],{"class":538},[461,762,763],{"class":512}," err ",[461,765,646],{"class":475},[461,767,545],{"class":471},[461,769,476],{"class":475},[461,771,380],{"class":500},[461,773,750],{"class":475},[461,775,712],{"class":512},[461,777,670],{"class":475},[461,779,780],{"class":500},"unwrap_err",[461,782,676],{"class":475},[461,784,786,789,791,794,796,799,802,804,807,809,811,814,817,820,823,826],{"class":463,"line":785},19,[461,787,788],{"class":500},"assert_eq!",[461,790,516],{"class":475},[461,792,793],{"class":512},"err",[461,795,715],{"class":475},[461,797,798],{"class":512},"issues",[461,800,801],{"class":475},"[",[461,803,729],{"class":467},[461,805,806],{"class":475},"].",[461,808,345],{"class":512},[461,810,715],{"class":475},[461,812,813],{"class":500},"key",[461,815,816],{"class":475},"(),",[461,818,819],{"class":475}," \"",[461,821,822],{"class":657},"too_small",[461,824,825],{"class":475},"\"",[461,827,828],{"class":475},");\n",[341,830,831,833,834,836,837,419,840,843],{},[345,832,380],{}," serializes the value with serde and runs the same field schemas. Because the value goes through ",[345,835,405],{},", the serialize names apply. With different serialize and deserialize names (",[345,838,839],{},"rename(serialize = \"a\", deserialize = \"b\")",[345,841,842],{},"rename_all(serialize = ..., deserialize = ...)",") a value serialized by your struct still validates.",[341,845,846,847,348,850,853],{},"Any schema also has ",[345,848,849],{},"schema.validate(&value)",[345,851,852],{},"schema.is_valid(&value)"," for single values:",[452,855,857],{"className":454,"code":856,"language":456,"meta":457,"style":457},"assert!(vld::string().email().is_valid(&\"ada@example.com\"));\nassert!(vld::array(vld::u8()).validate(&vec![1, 2, 3]).is_ok());\n",[345,858,859,890],{"__ignoreMap":457},[461,860,861,863,865,867,869,871,873,875,877,879,881,883,886,888],{"class":463,"line":464},[461,862,737],{"class":500},[461,864,516],{"class":475},[461,866,495],{"class":471},[461,868,476],{"class":475},[461,870,572],{"class":500},[461,872,575],{"class":475},[461,874,578],{"class":500},[461,876,575],{"class":475},[461,878,383],{"class":500},[461,880,750],{"class":475},[461,882,825],{"class":475},[461,884,885],{"class":657},"ada@example.com",[461,887,825],{"class":475},[461,889,755],{"class":475},[461,891,892,894,896,898,900,903,905,907,909,912,915,917,919,922,924,927,929,932,934,937,940,943],{"class":463,"line":485},[461,893,737],{"class":500},[461,895,516],{"class":475},[461,897,495],{"class":471},[461,899,476],{"class":475},[461,901,902],{"class":500},"array",[461,904,516],{"class":475},[461,906,495],{"class":471},[461,908,476],{"class":475},[461,910,911],{"class":500},"u8",[461,913,914],{"class":475},"()).",[461,916,380],{"class":500},[461,918,750],{"class":475},[461,920,921],{"class":500},"vec!",[461,923,801],{"class":475},[461,925,926],{"class":467},"1",[461,928,522],{"class":475},[461,930,931],{"class":467}," 2",[461,933,522],{"class":475},[461,935,936],{"class":467}," 3",[461,938,939],{"class":475},"]).",[461,941,942],{"class":500},"is_ok",[461,944,945],{"class":475},"());\n",[341,947,948,951,952,369,955,958,959,962,963,965,966,715],{},[345,949,950],{},"impl_rules!"," adds ",[345,953,954],{},"validate()",[345,956,957],{},"is_valid()"," as ",[431,960,961],{},"instance"," methods to structs you did not declare with ",[345,964,347],{},": see ",[967,968,950],"a",{"href":969},"\u002Fstructs\u002Fschema-macro#impl_rules",[971,972,973],"style",{},"html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":457,"searchDepth":485,"depth":492,"links":975},[],"When to parse input into a struct and when to validate an existing value, and which field names each one uses.","md",null,{},{"title":88,"description":976},"f6HyS-45S_0IBUhfpMz2zaCs5wtfnKI1_cHWHRS_c5o",[983,985],{"title":84,"path":85,"stem":86,"description":984,"children":-1},"The derive macro for structs and enums — field attributes, serde renames and tagging, skip and default, generics and lenient parsing.",{"title":92,"path":93,"stem":94,"description":986,"children":-1},"Validate each field separately, build the struct anyway and inspect per-field results.",1794036359580]