[{"data":1,"prerenderedAt":1733},["ShallowReactive",2],{"navigation":3,"\u002Fschemas\u002Fobjects":335,"\u002Fschemas\u002Fobjects-surround":1728},[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":58,"body":337,"description":1722,"extension":1723,"links":1724,"meta":1725,"navigation":410,"path":59,"seo":1726,"stem":60,"__hash__":1727},"docs\u002F2.schemas\u002F6.objects.md",{"type":338,"value":339,"toc":1715},"minimark",[340,352,373,710,715,780,793,797,858,1054,1058,1175,1463,1467,1495,1680,1684,1711],[341,342,343,347,348,351],"p",{},[344,345,346],"code",{},"vld::object()"," builds an object schema at runtime. Its output is a ",[344,349,350],{},"serde_json::Map\u003CString, Value>"," with the validated (and transformed) field values.",[353,354,355],"tip",{},[341,356,357,358,364,365,369,370,372],{},"For typed structs use ",[359,360,361],"a",{"href":81},[344,362,363],{},"schema!"," or ",[359,366,367],{"href":85},[344,368,84],{},". Use ",[344,371,346],{}," when the fields are only known at runtime (from config, a database, a plugin) or when you need the operations below.",[374,375,380],"pre",{"className":376,"code":377,"language":378,"meta":379,"style":379},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use vld::prelude::*;\n\nlet user = vld::object()\n    .field(\"name\", vld::string().min(1))\n    .field(\"age\", vld::number().int().min(0))\n    .field_optional(\"nickname\", vld::string().min(1));\n\nlet out = user.parse(r#\"{\"name\": \"Ada\", \"age\": 36, \"extra\": true}\"#).unwrap();\nassert_eq!(out[\"name\"], \"Ada\");\nassert_eq!(out[\"nickname\"], serde_json::Value::Null);\nassert!(out.get(\"extra\").is_none()); \u002F\u002F stripped\n","rust","",[344,381,382,405,412,437,482,523,559,564,606,640,674],{"__ignoreMap":379},[383,384,387,391,395,399,402],"span",{"class":385,"line":386},"line",1,[383,388,390],{"class":389},"sbssI","use",[383,392,394],{"class":393},"sBMFI"," vld",[383,396,398],{"class":397},"sMK4o","::",[383,400,401],{"class":393},"prelude",[383,403,404],{"class":397},"::*;\n",[383,406,408],{"class":385,"line":407},2,[383,409,411],{"emptyLinePlaceholder":410},true,"\n",[383,413,415,419,423,426,428,430,434],{"class":385,"line":414},3,[383,416,418],{"class":417},"spNyl","let",[383,420,422],{"class":421},"sTEyZ"," user ",[383,424,425],{"class":397},"=",[383,427,394],{"class":393},[383,429,398],{"class":397},[383,431,433],{"class":432},"s2Zo4","object",[383,435,436],{"class":397},"()\n",[383,438,440,443,446,449,452,456,458,461,463,465,468,471,474,476,479],{"class":385,"line":439},4,[383,441,442],{"class":397},"    .",[383,444,445],{"class":432},"field",[383,447,448],{"class":397},"(",[383,450,451],{"class":397},"\"",[383,453,455],{"class":454},"sfazB","name",[383,457,451],{"class":397},[383,459,460],{"class":397},",",[383,462,394],{"class":393},[383,464,398],{"class":397},[383,466,467],{"class":432},"string",[383,469,470],{"class":397},"().",[383,472,473],{"class":432},"min",[383,475,448],{"class":397},[383,477,478],{"class":389},"1",[383,480,481],{"class":397},"))\n",[383,483,485,487,489,491,493,496,498,500,502,504,507,509,512,514,516,518,521],{"class":385,"line":484},5,[383,486,442],{"class":397},[383,488,445],{"class":432},[383,490,448],{"class":397},[383,492,451],{"class":397},[383,494,495],{"class":454},"age",[383,497,451],{"class":397},[383,499,460],{"class":397},[383,501,394],{"class":393},[383,503,398],{"class":397},[383,505,506],{"class":432},"number",[383,508,470],{"class":397},[383,510,511],{"class":432},"int",[383,513,470],{"class":397},[383,515,473],{"class":432},[383,517,448],{"class":397},[383,519,520],{"class":389},"0",[383,522,481],{"class":397},[383,524,526,528,531,533,535,538,540,542,544,546,548,550,552,554,556],{"class":385,"line":525},6,[383,527,442],{"class":397},[383,529,530],{"class":432},"field_optional",[383,532,448],{"class":397},[383,534,451],{"class":397},[383,536,537],{"class":454},"nickname",[383,539,451],{"class":397},[383,541,460],{"class":397},[383,543,394],{"class":393},[383,545,398],{"class":397},[383,547,467],{"class":432},[383,549,470],{"class":397},[383,551,473],{"class":432},[383,553,448],{"class":397},[383,555,478],{"class":389},[383,557,558],{"class":397},"));\n",[383,560,562],{"class":385,"line":561},7,[383,563,411],{"emptyLinePlaceholder":410},[383,565,567,569,572,574,577,580,583,585,588,591,594,597,600,603],{"class":385,"line":566},8,[383,568,418],{"class":417},[383,570,571],{"class":421}," out ",[383,573,425],{"class":397},[383,575,576],{"class":421}," user",[383,578,579],{"class":397},".",[383,581,582],{"class":432},"parse",[383,584,448],{"class":397},[383,586,587],{"class":454},"r",[383,589,590],{"class":397},"#\"",[383,592,593],{"class":454},"{\"name\": \"Ada\", \"age\": 36, \"extra\": true}",[383,595,596],{"class":397},"\"#",[383,598,599],{"class":397},").",[383,601,602],{"class":432},"unwrap",[383,604,605],{"class":397},"();\n",[383,607,609,612,614,617,620,622,624,626,629,632,635,637],{"class":385,"line":608},9,[383,610,611],{"class":432},"assert_eq!",[383,613,448],{"class":397},[383,615,616],{"class":421},"out",[383,618,619],{"class":397},"[",[383,621,451],{"class":397},[383,623,455],{"class":454},[383,625,451],{"class":397},[383,627,628],{"class":397},"],",[383,630,631],{"class":397}," \"",[383,633,634],{"class":454},"Ada",[383,636,451],{"class":397},[383,638,639],{"class":397},");\n",[383,641,643,645,647,649,651,653,655,657,659,662,664,667,669,672],{"class":385,"line":642},10,[383,644,611],{"class":432},[383,646,448],{"class":397},[383,648,616],{"class":421},[383,650,619],{"class":397},[383,652,451],{"class":397},[383,654,537],{"class":454},[383,656,451],{"class":397},[383,658,628],{"class":397},[383,660,661],{"class":393}," serde_json",[383,663,398],{"class":397},[383,665,666],{"class":393},"Value",[383,668,398],{"class":397},[383,670,671],{"class":393},"Null",[383,673,639],{"class":397},[383,675,677,680,682,684,686,689,691,693,696,698,700,703,706],{"class":385,"line":676},11,[383,678,679],{"class":432},"assert!",[383,681,448],{"class":397},[383,683,616],{"class":421},[383,685,579],{"class":397},[383,687,688],{"class":432},"get",[383,690,448],{"class":397},[383,692,451],{"class":397},[383,694,695],{"class":454},"extra",[383,697,451],{"class":397},[383,699,599],{"class":397},[383,701,702],{"class":432},"is_none",[383,704,705],{"class":397},"());",[383,707,709],{"class":708},"sHwdD"," \u002F\u002F stripped\n",[711,712,714],"h2",{"id":713},"fields","Fields",[716,717,718,731],"table",{},[719,720,721],"thead",{},[722,723,724,728],"tr",{},[725,726,727],"th",{},"Method",[725,729,730],{},"Effect",[732,733,734,745,770],"tbody",{},[722,735,736,742],{},[737,738,739],"td",{},[344,740,741],{},"field(name, schema)",[737,743,744],{},"required field (a field with the same name is replaced)",[722,746,747,752],{},[737,748,749],{},[344,750,751],{},"field_optional(name, schema)",[737,753,754,755,758,759,761,762,765,766,769],{},"missing or ",[344,756,757],{},"null"," gives ",[344,760,757],{}," in the output; the inner schema still runs first, so ",[344,763,764],{},".with_default()"," and ",[344,767,768],{},".catch()"," produce their value",[722,771,772,777],{},[737,773,774],{},[344,775,776],{},"keyof()",[737,778,779],{},"the declared field names",[341,781,782,783,786,787,789,790,579],{},"A required field that is absent reports ",[344,784,785],{},"missing_field","; a present ",[344,788,757],{}," reports ",[344,791,792],{},"invalid_type",[711,794,796],{"id":795},"unknown-keys","Unknown keys",[716,798,799,808],{},[719,800,801],{},[722,802,803,805],{},[725,804,727],{},[725,806,807],{},"Unknown keys are",[732,809,810,821,834,844],{},[722,811,812,818],{},[737,813,814,817],{},[344,815,816],{},"strip()"," (default)",[737,819,820],{},"dropped from the output",[722,822,823,828],{},[737,824,825],{},[344,826,827],{},"strict()",[737,829,830,831],{},"rejected with ",[344,832,833],{},"unrecognized_field",[722,835,836,841],{},[737,837,838],{},[344,839,840],{},"passthrough()",[737,842,843],{},"copied to the output unchanged",[722,845,846,851],{},[737,847,848],{},[344,849,850],{},"catchall(schema)",[737,852,853,854,857],{},"validated with ",[344,855,856],{},"schema"," and kept (overrides the mode)",[374,859,861],{"className":376,"code":860,"language":378,"meta":379,"style":379},"let strict = vld::object().field(\"id\", vld::u64()).strict();\nassert!(strict.parse(r#\"{\"id\": 1, \"x\": 2}\"#).is_err());\n\nlet labels = vld::object().field(\"id\", vld::u64()).catchall(vld::string());\nassert!(labels.parse(r#\"{\"id\": 1, \"env\": \"prod\"}\"#).is_ok());\nassert!(labels.parse(r#\"{\"id\": 1, \"env\": 3}\"#).is_err());\n",[344,862,863,908,939,943,994,1025],{"__ignoreMap":379},[383,864,865,867,870,872,874,876,878,880,882,884,886,889,891,893,895,897,900,903,906],{"class":385,"line":386},[383,866,418],{"class":417},[383,868,869],{"class":421}," strict ",[383,871,425],{"class":397},[383,873,394],{"class":393},[383,875,398],{"class":397},[383,877,433],{"class":432},[383,879,470],{"class":397},[383,881,445],{"class":432},[383,883,448],{"class":397},[383,885,451],{"class":397},[383,887,888],{"class":454},"id",[383,890,451],{"class":397},[383,892,460],{"class":397},[383,894,394],{"class":393},[383,896,398],{"class":397},[383,898,899],{"class":432},"u64",[383,901,902],{"class":397},"()).",[383,904,905],{"class":432},"strict",[383,907,605],{"class":397},[383,909,910,912,914,916,918,920,922,924,926,929,931,933,936],{"class":385,"line":407},[383,911,679],{"class":432},[383,913,448],{"class":397},[383,915,905],{"class":421},[383,917,579],{"class":397},[383,919,582],{"class":432},[383,921,448],{"class":397},[383,923,587],{"class":454},[383,925,590],{"class":397},[383,927,928],{"class":454},"{\"id\": 1, \"x\": 2}",[383,930,596],{"class":397},[383,932,599],{"class":397},[383,934,935],{"class":432},"is_err",[383,937,938],{"class":397},"());\n",[383,940,941],{"class":385,"line":414},[383,942,411],{"emptyLinePlaceholder":410},[383,944,945,947,950,952,954,956,958,960,962,964,966,968,970,972,974,976,978,980,983,985,988,990,992],{"class":385,"line":439},[383,946,418],{"class":417},[383,948,949],{"class":421}," labels ",[383,951,425],{"class":397},[383,953,394],{"class":393},[383,955,398],{"class":397},[383,957,433],{"class":432},[383,959,470],{"class":397},[383,961,445],{"class":432},[383,963,448],{"class":397},[383,965,451],{"class":397},[383,967,888],{"class":454},[383,969,451],{"class":397},[383,971,460],{"class":397},[383,973,394],{"class":393},[383,975,398],{"class":397},[383,977,899],{"class":432},[383,979,902],{"class":397},[383,981,982],{"class":432},"catchall",[383,984,448],{"class":397},[383,986,987],{"class":393},"vld",[383,989,398],{"class":397},[383,991,467],{"class":432},[383,993,938],{"class":397},[383,995,996,998,1000,1003,1005,1007,1009,1011,1013,1016,1018,1020,1023],{"class":385,"line":484},[383,997,679],{"class":432},[383,999,448],{"class":397},[383,1001,1002],{"class":421},"labels",[383,1004,579],{"class":397},[383,1006,582],{"class":432},[383,1008,448],{"class":397},[383,1010,587],{"class":454},[383,1012,590],{"class":397},[383,1014,1015],{"class":454},"{\"id\": 1, \"env\": \"prod\"}",[383,1017,596],{"class":397},[383,1019,599],{"class":397},[383,1021,1022],{"class":432},"is_ok",[383,1024,938],{"class":397},[383,1026,1027,1029,1031,1033,1035,1037,1039,1041,1043,1046,1048,1050,1052],{"class":385,"line":525},[383,1028,679],{"class":432},[383,1030,448],{"class":397},[383,1032,1002],{"class":421},[383,1034,579],{"class":397},[383,1036,582],{"class":432},[383,1038,448],{"class":397},[383,1040,587],{"class":454},[383,1042,590],{"class":397},[383,1044,1045],{"class":454},"{\"id\": 1, \"env\": 3}",[383,1047,596],{"class":397},[383,1049,599],{"class":397},[383,1051,935],{"class":432},[383,1053,938],{"class":397},[711,1055,1057],{"id":1056},"composition","Composition",[716,1059,1060,1068],{},[719,1061,1062],{},[722,1063,1064,1066],{},[725,1065,727],{},[725,1067,730],{},[732,1069,1070,1080,1090,1127,1146,1162],{},[722,1071,1072,1077],{},[737,1073,1074],{},[344,1075,1076],{},"pick(&[\"a\", \"b\"])",[737,1078,1079],{},"keep only these fields",[722,1081,1082,1087],{},[737,1083,1084],{},[344,1085,1086],{},"omit(\"a\")",[737,1088,1089],{},"remove one field",[722,1091,1092,1101],{},[737,1093,1094,1097,1098],{},[344,1095,1096],{},"extend(other)"," \u002F ",[344,1099,1100],{},"merge(other)",[737,1102,1103,1104,1107,1108,1110,1111,1113,1114,1116,1117,1097,1120,765,1123,1126],{},"add the fields of ",[344,1105,1106],{},"other","; on a name clash ",[344,1109,1106],{}," wins. ",[344,1112,1106],{},"'s non-default unknown-key mode, ",[344,1115,982],{},", ",[344,1118,1119],{},"min_keys",[344,1121,1122],{},"max_keys",[344,1124,1125],{},"when"," rules are taken too",[722,1128,1129,1134],{},[737,1130,1131],{},[344,1132,1133],{},"partial()",[737,1135,1136,1137,1139,1140,1142,1143,1145],{},"every field becomes optional (missing \u002F ",[344,1138,757],{}," → ",[344,1141,757],{},"); not recursive: call ",[344,1144,1133],{}," on nested objects before adding them",[722,1147,1148,1153],{},[737,1149,1150],{},[344,1151,1152],{},"required()",[737,1154,1155,1156,1158,1159,1161],{},"the opposite of ",[344,1157,1133],{},": ",[344,1160,757],{}," fails again",[722,1163,1164,1172],{},[737,1165,1166,1097,1169],{},[344,1167,1168],{},"min_keys(n)",[344,1170,1171],{},"max_keys(n)",[737,1173,1174],{},"bound the number of keys in the input",[374,1176,1178],{"className":376,"code":1177,"language":378,"meta":379,"style":379},"let base = vld::object().field(\"id\", vld::u64()).field(\"name\", vld::string());\nlet with_email = vld::object().field(\"email\", vld::string().email());\n\nlet create = base.extend(with_email).omit(\"id\");\nlet patch = vld::object()\n    .field(\"name\", vld::string())\n    .field(\"email\", vld::string().email())\n    .partial();\n\nassert!(create.parse(r#\"{\"name\": \"Ada\", \"email\": \"ada@example.com\"}\"#).is_ok());\nassert!(patch.parse(r#\"{}\"#).is_ok());\n",[344,1179,1180,1237,1279,1283,1320,1337,1362,1390,1399,1403,1433],{"__ignoreMap":379},[383,1181,1182,1184,1187,1189,1191,1193,1195,1197,1199,1201,1203,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235],{"class":385,"line":386},[383,1183,418],{"class":417},[383,1185,1186],{"class":421}," base ",[383,1188,425],{"class":397},[383,1190,394],{"class":393},[383,1192,398],{"class":397},[383,1194,433],{"class":432},[383,1196,470],{"class":397},[383,1198,445],{"class":432},[383,1200,448],{"class":397},[383,1202,451],{"class":397},[383,1204,888],{"class":454},[383,1206,451],{"class":397},[383,1208,460],{"class":397},[383,1210,394],{"class":393},[383,1212,398],{"class":397},[383,1214,899],{"class":432},[383,1216,902],{"class":397},[383,1218,445],{"class":432},[383,1220,448],{"class":397},[383,1222,451],{"class":397},[383,1224,455],{"class":454},[383,1226,451],{"class":397},[383,1228,460],{"class":397},[383,1230,394],{"class":393},[383,1232,398],{"class":397},[383,1234,467],{"class":432},[383,1236,938],{"class":397},[383,1238,1239,1241,1244,1246,1248,1250,1252,1254,1256,1258,1260,1263,1265,1267,1269,1271,1273,1275,1277],{"class":385,"line":407},[383,1240,418],{"class":417},[383,1242,1243],{"class":421}," with_email ",[383,1245,425],{"class":397},[383,1247,394],{"class":393},[383,1249,398],{"class":397},[383,1251,433],{"class":432},[383,1253,470],{"class":397},[383,1255,445],{"class":432},[383,1257,448],{"class":397},[383,1259,451],{"class":397},[383,1261,1262],{"class":454},"email",[383,1264,451],{"class":397},[383,1266,460],{"class":397},[383,1268,394],{"class":393},[383,1270,398],{"class":397},[383,1272,467],{"class":432},[383,1274,470],{"class":397},[383,1276,1262],{"class":432},[383,1278,938],{"class":397},[383,1280,1281],{"class":385,"line":414},[383,1282,411],{"emptyLinePlaceholder":410},[383,1284,1285,1287,1290,1292,1295,1297,1300,1302,1305,1307,1310,1312,1314,1316,1318],{"class":385,"line":439},[383,1286,418],{"class":417},[383,1288,1289],{"class":421}," create ",[383,1291,425],{"class":397},[383,1293,1294],{"class":421}," base",[383,1296,579],{"class":397},[383,1298,1299],{"class":432},"extend",[383,1301,448],{"class":397},[383,1303,1304],{"class":421},"with_email",[383,1306,599],{"class":397},[383,1308,1309],{"class":432},"omit",[383,1311,448],{"class":397},[383,1313,451],{"class":397},[383,1315,888],{"class":454},[383,1317,451],{"class":397},[383,1319,639],{"class":397},[383,1321,1322,1324,1327,1329,1331,1333,1335],{"class":385,"line":484},[383,1323,418],{"class":417},[383,1325,1326],{"class":421}," patch ",[383,1328,425],{"class":397},[383,1330,394],{"class":393},[383,1332,398],{"class":397},[383,1334,433],{"class":432},[383,1336,436],{"class":397},[383,1338,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359],{"class":385,"line":525},[383,1340,442],{"class":397},[383,1342,445],{"class":432},[383,1344,448],{"class":397},[383,1346,451],{"class":397},[383,1348,455],{"class":454},[383,1350,451],{"class":397},[383,1352,460],{"class":397},[383,1354,394],{"class":393},[383,1356,398],{"class":397},[383,1358,467],{"class":432},[383,1360,1361],{"class":397},"())\n",[383,1363,1364,1366,1368,1370,1372,1374,1376,1378,1380,1382,1384,1386,1388],{"class":385,"line":561},[383,1365,442],{"class":397},[383,1367,445],{"class":432},[383,1369,448],{"class":397},[383,1371,451],{"class":397},[383,1373,1262],{"class":454},[383,1375,451],{"class":397},[383,1377,460],{"class":397},[383,1379,394],{"class":393},[383,1381,398],{"class":397},[383,1383,467],{"class":432},[383,1385,470],{"class":397},[383,1387,1262],{"class":432},[383,1389,1361],{"class":397},[383,1391,1392,1394,1397],{"class":385,"line":566},[383,1393,442],{"class":397},[383,1395,1396],{"class":432},"partial",[383,1398,605],{"class":397},[383,1400,1401],{"class":385,"line":608},[383,1402,411],{"emptyLinePlaceholder":410},[383,1404,1405,1407,1409,1412,1414,1416,1418,1420,1422,1425,1427,1429,1431],{"class":385,"line":642},[383,1406,679],{"class":432},[383,1408,448],{"class":397},[383,1410,1411],{"class":421},"create",[383,1413,579],{"class":397},[383,1415,582],{"class":432},[383,1417,448],{"class":397},[383,1419,587],{"class":454},[383,1421,590],{"class":397},[383,1423,1424],{"class":454},"{\"name\": \"Ada\", \"email\": \"ada@example.com\"}",[383,1426,596],{"class":397},[383,1428,599],{"class":397},[383,1430,1022],{"class":432},[383,1432,938],{"class":397},[383,1434,1435,1437,1439,1442,1444,1446,1448,1450,1452,1455,1457,1459,1461],{"class":385,"line":676},[383,1436,679],{"class":432},[383,1438,448],{"class":397},[383,1440,1441],{"class":421},"patch",[383,1443,579],{"class":397},[383,1445,582],{"class":432},[383,1447,448],{"class":397},[383,1449,587],{"class":454},[383,1451,590],{"class":397},[383,1453,1454],{"class":454},"{}",[383,1456,596],{"class":397},[383,1458,599],{"class":397},[383,1460,1022],{"class":432},[383,1462,938],{"class":397},[711,1464,1466],{"id":1465},"conditional-rules","Conditional rules",[341,1468,1469,1472,1473,1476,1477,1479,1480,1483,1484,1488,1489,1491,1492,1494],{},[344,1470,1471],{},"when(field, value, target, schema)"," validates ",[344,1474,1475],{},"target"," with an extra schema when ",[344,1478,445],{}," equals ",[344,1481,1482],{},"value",". The rule runs ",[1485,1486,1487],"strong",{},"in addition"," to the target's own field schema. Under ",[344,1490,827],{}," an undeclared ",[344,1493,1475],{}," is not reported as unknown.",[374,1496,1498],{"className":376,"code":1497,"language":378,"meta":379,"style":379},"let account = vld::object()\n    .field(\"role\", vld::string())\n    .field_optional(\"admin_key\", vld::string())\n    .when(\"role\", \"admin\", \"admin_key\", vld::string().min(10));\n\nassert!(account.parse(r#\"{\"role\": \"user\"}\"#).is_ok());\nassert!(account.parse(r#\"{\"role\": \"admin\", \"admin_key\": \"short\"}\"#).is_err());\n",[344,1499,1500,1517,1542,1567,1617,1621,1651],{"__ignoreMap":379},[383,1501,1502,1504,1507,1509,1511,1513,1515],{"class":385,"line":386},[383,1503,418],{"class":417},[383,1505,1506],{"class":421}," account ",[383,1508,425],{"class":397},[383,1510,394],{"class":393},[383,1512,398],{"class":397},[383,1514,433],{"class":432},[383,1516,436],{"class":397},[383,1518,1519,1521,1523,1525,1527,1530,1532,1534,1536,1538,1540],{"class":385,"line":407},[383,1520,442],{"class":397},[383,1522,445],{"class":432},[383,1524,448],{"class":397},[383,1526,451],{"class":397},[383,1528,1529],{"class":454},"role",[383,1531,451],{"class":397},[383,1533,460],{"class":397},[383,1535,394],{"class":393},[383,1537,398],{"class":397},[383,1539,467],{"class":432},[383,1541,1361],{"class":397},[383,1543,1544,1546,1548,1550,1552,1555,1557,1559,1561,1563,1565],{"class":385,"line":414},[383,1545,442],{"class":397},[383,1547,530],{"class":432},[383,1549,448],{"class":397},[383,1551,451],{"class":397},[383,1553,1554],{"class":454},"admin_key",[383,1556,451],{"class":397},[383,1558,460],{"class":397},[383,1560,394],{"class":393},[383,1562,398],{"class":397},[383,1564,467],{"class":432},[383,1566,1361],{"class":397},[383,1568,1569,1571,1573,1575,1577,1579,1581,1583,1585,1588,1590,1592,1594,1596,1598,1600,1602,1604,1606,1608,1610,1612,1615],{"class":385,"line":439},[383,1570,442],{"class":397},[383,1572,1125],{"class":432},[383,1574,448],{"class":397},[383,1576,451],{"class":397},[383,1578,1529],{"class":454},[383,1580,451],{"class":397},[383,1582,460],{"class":397},[383,1584,631],{"class":397},[383,1586,1587],{"class":454},"admin",[383,1589,451],{"class":397},[383,1591,460],{"class":397},[383,1593,631],{"class":397},[383,1595,1554],{"class":454},[383,1597,451],{"class":397},[383,1599,460],{"class":397},[383,1601,394],{"class":393},[383,1603,398],{"class":397},[383,1605,467],{"class":432},[383,1607,470],{"class":397},[383,1609,473],{"class":432},[383,1611,448],{"class":397},[383,1613,1614],{"class":389},"10",[383,1616,558],{"class":397},[383,1618,1619],{"class":385,"line":484},[383,1620,411],{"emptyLinePlaceholder":410},[383,1622,1623,1625,1627,1630,1632,1634,1636,1638,1640,1643,1645,1647,1649],{"class":385,"line":525},[383,1624,679],{"class":432},[383,1626,448],{"class":397},[383,1628,1629],{"class":421},"account",[383,1631,579],{"class":397},[383,1633,582],{"class":432},[383,1635,448],{"class":397},[383,1637,587],{"class":454},[383,1639,590],{"class":397},[383,1641,1642],{"class":454},"{\"role\": \"user\"}",[383,1644,596],{"class":397},[383,1646,599],{"class":397},[383,1648,1022],{"class":432},[383,1650,938],{"class":397},[383,1652,1653,1655,1657,1659,1661,1663,1665,1667,1669,1672,1674,1676,1678],{"class":385,"line":561},[383,1654,679],{"class":432},[383,1656,448],{"class":397},[383,1658,1629],{"class":421},[383,1660,579],{"class":397},[383,1662,582],{"class":432},[383,1664,448],{"class":397},[383,1666,587],{"class":454},[383,1668,590],{"class":397},[383,1670,1671],{"class":454},"{\"role\": \"admin\", \"admin_key\": \"short\"}",[383,1673,596],{"class":397},[383,1675,599],{"class":397},[383,1677,935],{"class":432},[383,1679,938],{"class":397},[711,1681,1683],{"id":1682},"json-schema","JSON Schema",[341,1685,1686,1687,1690,1691,1116,1694,1116,1697,765,1699,1702,1703,1706,1707,1710],{},"With the ",[344,1688,1689],{},"openapi"," feature every field keeps its JSON Schema and required status (",[344,1692,1693],{},".optional()",[344,1695,1696],{},".nullish()",[344,1698,764],{},[344,1700,1701],{},".nullable()"," fields are not ",[344,1704,1705],{},"required","), so ",[344,1708,1709],{},"user.json_schema()"," describes the object fully.",[1712,1713,1714],"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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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":379,"searchDepth":407,"depth":414,"links":1716},[1717,1718,1719,1720,1721],{"id":713,"depth":407,"text":714},{"id":795,"depth":407,"text":796},{"id":1056,"depth":407,"text":1057},{"id":1465,"depth":407,"text":1466},{"id":1682,"depth":407,"text":1683},"vld::object() — runtime-defined objects with unknown-key modes, catchall, partial, pick\u002Fomit, extend\u002Fmerge and conditional rules.","md",null,{},{"title":58,"description":1722},"gRtDvFeb0cScEeWGGOaGcwgMKsPWYA-mSvWfjI06EcY",[1729,1731],{"title":54,"path":55,"stem":56,"description":1730,"children":-1},"Arrays, tuples, sets, maps and records.",{"title":62,"path":63,"stem":64,"description":1732,"children":-1},"optional, nullable, nullish, with_default and catch.",1794036359037]