[{"data":1,"prerenderedAt":1146},["ShallowReactive",2],{"navigation":3,"\u002Fgetting-started\u002Fintroduction":335,"\u002Fgetting-started\u002Fintroduction-surround":1143},[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":11,"body":337,"description":1137,"extension":1138,"links":1139,"meta":1140,"navigation":402,"path":12,"seo":1141,"stem":13,"__hash__":1142},"docs\u002F1.getting-started\u002F1.introduction.md",{"type":338,"value":339,"toc":1132},"minimark",[340,365,596,601,607,616,674,678,681,940,943,1007,1011,1029,1118,1128],[341,342,343,347,348,355,356,359,360,364],"p",{},[344,345,346],"code",{},"vld"," is a runtime validation library for Rust, modelled on ",[349,350,354],"a",{"href":351,"rel":352},"https:\u002F\u002Fzod.dev",[353],"nofollow","Zod",". You describe the shape of your data with schema values, then parse untrusted input with them. A successful parse returns typed Rust values; a failed one returns a ",[344,357,358],{},"VldError"," listing ",[361,362,363],"strong",{},"every"," problem with its path.",[366,367,372],"pre",{"className":368,"code":369,"language":370,"meta":371,"style":371},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use vld::prelude::*;\n\nlet schema = vld::string().trim().min(2).max(50);\n\nassert_eq!(schema.parse(r#\"\"  Alex \"\"#).unwrap(), \"Alex\");\n\nlet err = schema.parse(r#\"\"A\"\"#).unwrap_err();\nassert_eq!(err.issues[0].code.key(), \"too_small\");\n","rust","",[344,373,374,397,404,457,462,513,518,554],{"__ignoreMap":371},[375,376,379,383,387,391,394],"span",{"class":377,"line":378},"line",1,[375,380,382],{"class":381},"sbssI","use",[375,384,386],{"class":385},"sBMFI"," vld",[375,388,390],{"class":389},"sMK4o","::",[375,392,393],{"class":385},"prelude",[375,395,396],{"class":389},"::*;\n",[375,398,400],{"class":377,"line":399},2,[375,401,403],{"emptyLinePlaceholder":402},true,"\n",[375,405,407,411,415,418,420,422,426,429,432,434,437,440,443,446,449,451,454],{"class":377,"line":406},3,[375,408,410],{"class":409},"spNyl","let",[375,412,414],{"class":413},"sTEyZ"," schema ",[375,416,417],{"class":389},"=",[375,419,386],{"class":385},[375,421,390],{"class":389},[375,423,425],{"class":424},"s2Zo4","string",[375,427,428],{"class":389},"().",[375,430,431],{"class":424},"trim",[375,433,428],{"class":389},[375,435,436],{"class":424},"min",[375,438,439],{"class":389},"(",[375,441,442],{"class":381},"2",[375,444,445],{"class":389},").",[375,447,448],{"class":424},"max",[375,450,439],{"class":389},[375,452,453],{"class":381},"50",[375,455,456],{"class":389},");\n",[375,458,460],{"class":377,"line":459},4,[375,461,403],{"emptyLinePlaceholder":402},[375,463,465,468,470,473,476,479,481,485,488,491,494,496,499,502,505,508,511],{"class":377,"line":464},5,[375,466,467],{"class":424},"assert_eq!",[375,469,439],{"class":389},[375,471,472],{"class":413},"schema",[375,474,475],{"class":389},".",[375,477,478],{"class":424},"parse",[375,480,439],{"class":389},[375,482,484],{"class":483},"sfazB","r",[375,486,487],{"class":389},"#\"",[375,489,490],{"class":483},"\"  Alex \"",[375,492,493],{"class":389},"\"#",[375,495,445],{"class":389},[375,497,498],{"class":424},"unwrap",[375,500,501],{"class":389},"(),",[375,503,504],{"class":389}," \"",[375,506,507],{"class":483},"Alex",[375,509,510],{"class":389},"\"",[375,512,456],{"class":389},[375,514,516],{"class":377,"line":515},6,[375,517,403],{"emptyLinePlaceholder":402},[375,519,521,523,526,528,531,533,535,537,539,541,544,546,548,551],{"class":377,"line":520},7,[375,522,410],{"class":409},[375,524,525],{"class":413}," err ",[375,527,417],{"class":389},[375,529,530],{"class":413}," schema",[375,532,475],{"class":389},[375,534,478],{"class":424},[375,536,439],{"class":389},[375,538,484],{"class":483},[375,540,487],{"class":389},[375,542,543],{"class":483},"\"A\"",[375,545,493],{"class":389},[375,547,445],{"class":389},[375,549,550],{"class":424},"unwrap_err",[375,552,553],{"class":389},"();\n",[375,555,557,559,561,564,566,569,572,575,578,580,582,585,587,589,592,594],{"class":377,"line":556},8,[375,558,467],{"class":424},[375,560,439],{"class":389},[375,562,563],{"class":413},"err",[375,565,475],{"class":389},[375,567,568],{"class":413},"issues",[375,570,571],{"class":389},"[",[375,573,574],{"class":381},"0",[375,576,577],{"class":389},"].",[375,579,344],{"class":413},[375,581,475],{"class":389},[375,583,584],{"class":424},"key",[375,586,501],{"class":389},[375,588,504],{"class":389},[375,590,591],{"class":483},"too_small",[375,593,510],{"class":389},[375,595,456],{"class":389},[597,598,600],"h2",{"id":599},"why-not-just-serde","Why not just serde?",[341,602,603,606],{},[344,604,605],{},"serde"," turns JSON into Rust types and stops at the first error. It knows nothing about lengths, formats, ranges or cross-field rules, and its errors are strings meant for developers.",[341,608,609,611,612,615],{},[344,610,346],{}," sits on top of ",[344,613,614],{},"serde_json::Value",":",[617,618,619,636,650,663,669],"ul",{},[620,621,622,625,626,629,630,629,633,475],"li",{},[361,623,624],{},"Constraints"," live next to the type: ",[344,627,628],{},"vld::string().email()",", ",[344,631,632],{},"vld::u16().min(1)",[344,634,635],{},"vld::array(...).max_len(10)",[620,637,638,641,642,645,646,649],{},[361,639,640],{},"All issues at once",", each with a path (",[344,643,644],{},"items[2].email","), a typed ",[344,647,648],{},"IssueCode"," and a message you can translate.",[620,651,652,655,656,659,660,662],{},[361,653,654],{},"Typed output",": ",[344,657,658],{},"schema!"," structs and ",[344,661,84],{}," give you plain Rust structs.",[620,664,665,668],{},[361,666,667],{},"One source of truth"," for docs: every schema can emit JSON Schema \u002F OpenAPI 3.1.",[620,670,671,673],{},[361,672,136],{}," for web frameworks, databases, queues, config, CLI and UI crates reuse the same schemas and error format.",[597,675,677],{"id":676},"coming-from-zod","Coming from Zod",[341,679,680],{},"Most Zod concepts map one to one.",[682,683,684,695],"table",{},[685,686,687],"thead",{},[688,689,690,693],"tr",{},[691,692,354],"th",{},[691,694,346],{},[696,697,698,711,727,744,756,768,784,796,812,824,835,852,874,886,898,922],"tbody",{},[688,699,700,706],{},[701,702,703],"td",{},[344,704,705],{},"z.string().min(2).email()",[701,707,708],{},[344,709,710],{},"vld::string().min(2).email()",[688,712,713,718],{},[701,714,715],{},[344,716,717],{},"z.number().int().positive()",[701,719,720,723,724],{},[344,721,722],{},"vld::number().int().positive()"," or ",[344,725,726],{},"vld::u32().positive()",[688,728,729,734],{},[701,730,731],{},[344,732,733],{},"z.object({...})",[701,735,736,629,739,723,741],{},[344,737,738],{},"vld::schema! { struct ... }",[344,740,84],{},[344,742,743],{},"vld::object()",[688,745,746,751],{},[701,747,748],{},[344,749,750],{},"z.array(z.string()).max(5)",[701,752,753],{},[344,754,755],{},"vld::array(vld::string()).max_len(5)",[688,757,758,763],{},[701,759,760],{},[344,761,762],{},"z.enum([\"a\", \"b\"])",[701,764,765],{},[344,766,767],{},"vld::enumeration(&[\"a\", \"b\"])",[688,769,770,775],{},[701,771,772],{},[344,773,774],{},"z.union([...])",[701,776,777,780,781],{},[344,778,779],{},"vld::union!(a, b, c)"," \u002F ",[344,782,783],{},"a.or(b)",[688,785,786,791],{},[701,787,788],{},[344,789,790],{},"z.discriminatedUnion(\"type\", ...)",[701,792,793],{},[344,794,795],{},"vld::discriminated_union(\"type\").variant(...)",[688,797,798,809],{},[701,799,800,780,803,780,806],{},[344,801,802],{},".optional()",[344,804,805],{},".nullable()",[344,807,808],{},".nullish()",[701,810,811],{},"same names",[688,813,814,819],{},[701,815,816],{},[344,817,818],{},".default(x)",[701,820,821],{},[344,822,823],{},".with_default(x)",[688,825,826,831],{},[701,827,828],{},[344,829,830],{},".catch(x)",[701,832,833],{},[344,834,830],{},[688,836,837,845],{},[701,838,839,780,842],{},[344,840,841],{},".refine()",[344,843,844],{},".superRefine()",[701,846,847,780,849],{},[344,848,841],{},[344,850,851],{},".super_refine()",[688,853,854,865],{},[701,855,856,780,859,780,862],{},[344,857,858],{},".transform()",[344,860,861],{},".pipe()",[344,863,864],{},"z.preprocess()",[701,866,867,780,869,780,871],{},[344,868,858],{},[344,870,861],{},[344,872,873],{},"vld::preprocess()",[688,875,876,881],{},[701,877,878],{},[344,879,880],{},"z.lazy()",[701,882,883],{},[344,884,885],{},"vld::lazy()",[688,887,888,893],{},[701,889,890],{},[344,891,892],{},"z.coerce.number()",[701,894,895],{},[344,896,897],{},"vld::number().coerce()",[688,899,900,911],{},[701,901,902,780,905,780,908],{},[344,903,904],{},"error.flatten()",[344,906,907],{},"z.treeifyError()",[344,909,910],{},"z.prettifyError()",[701,912,913,780,916,780,919],{},[344,914,915],{},"flatten_error()",[344,917,918],{},"treeify_error()",[344,920,921],{},"prettify_error()",[688,923,924,929],{},[701,925,926],{},[344,927,928],{},"zod-to-json-schema",[701,930,931,932,935,936,939],{},"built in: ",[344,933,934],{},"JsonSchema::json_schema()"," (feature ",[344,937,938],{},"openapi",")",[341,941,942],{},"Differences worth knowing:",[617,944,945,973,987,997],{},[620,946,947,948,780,950,952,953,780,956,959,960,780,963,966,967,780,970,475],{},"Sizes are named after what they count: strings use ",[344,949,436],{},[344,951,448],{}," (characters), arrays ",[344,954,955],{},"min_len",[344,957,958],{},"max_len",", sets and files ",[344,961,962],{},"min_size",[344,964,965],{},"max_size",", objects and records ",[344,968,969],{},"min_keys",[344,971,972],{},"max_keys",[620,974,975,976,629,979,982,983,986],{},"Integers are their own schemas (",[344,977,978],{},"vld::i32()",[344,980,981],{},"vld::u64()","…) and are read exactly, without an ",[344,984,985],{},"f64"," round trip.",[620,988,989,990,993,994,996],{},"Unknown object keys are stripped by default, as in Zod; use ",[344,991,992],{},".strict()"," on ",[344,995,743],{}," to reject them.",[620,998,999,1000,780,1003,1006],{},"Unions return ",[344,1001,1002],{},"Either\u003CA, B>",[344,1004,1005],{},"Either3\u003CA, B, C>"," because Rust has no anonymous union types.",[597,1008,1010],{"id":1009},"crates","Crates",[341,1012,1013,1014,1016,1017,1019,1020,1023,1024,1028],{},"The core crate ",[344,1015,346],{}," has no required dependencies besides ",[344,1018,605],{}," and ",[344,1021,1022],{},"serde_json","; heavier validators sit behind ",[349,1025,1027],{"href":1026},"\u002Fgetting-started\u002Finstallation#features","features",". Around it are integration crates:",[617,1030,1031,1060,1070,1079,1091,1099,1107],{},[620,1032,1033,655,1036,629,1038,629,1040,629,1042,629,1044,629,1046,629,1048,629,1050,629,1052,629,1054,1056,1057,475],{},[361,1034,1035],{},"Web",[344,1037,152],{},[344,1039,156],{},[344,1041,160],{},[344,1043,164],{},[344,1045,168],{},[344,1047,172],{},[344,1049,176],{},[344,1051,180],{},[344,1053,184],{},[344,1055,188],{},". See the ",[349,1058,1059],{"href":149},"web overview",[620,1061,1062,655,1064,629,1066,629,1068,475],{},[361,1063,192],{},[344,1065,198],{},[344,1067,202],{},[344,1069,206],{},[620,1071,1072,655,1074,1076,1077,475],{},[361,1073,210],{},[344,1075,216],{}," (Zod \u002F Valibot from vld schemas), ",[344,1078,220],{},[620,1080,1081,655,1083,629,1085,629,1087,629,1089,475],{},[361,1082,224],{},[344,1084,230],{},[344,1086,234],{},[344,1088,238],{},[344,1090,242],{},[620,1092,1093,655,1095,629,1097,475],{},[361,1094,246],{},[344,1096,252],{},[344,1098,256],{},[620,1100,1101,655,1103,629,1105,475],{},[361,1102,260],{},[344,1104,266],{},[344,1106,270],{},[620,1108,1109,655,1112,629,1114,629,1116,475],{},[361,1110,1111],{},"UI",[344,1113,280],{},[344,1115,284],{},[344,1117,288],{},[341,1119,1120,1121,1124,1125,475],{},"Next: ",[349,1122,1123],{"href":16},"install the crate"," and follow the ",[349,1126,1127],{"href":20},"quick start",[1129,1130,1131],"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 .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":371,"searchDepth":399,"depth":406,"links":1133},[1134,1135,1136],{"id":599,"depth":399,"text":600},{"id":676,"depth":399,"text":677},{"id":1009,"depth":399,"text":1010},"What vld is, what problem it solves and how it compares to Zod and serde.","md",null,{},{"title":11,"description":1137},"D8DLrYHvkRldlFEuJB8Zzonr1_7rT91y8YN_btxwyYk",[1139,1144],{"title":15,"path":16,"stem":17,"description":1145,"children":-1},"Add vld to Cargo.toml and pick the features you need.",1794036356982]