[{"data":1,"prerenderedAt":1612},["ShallowReactive",2],{"navigation":3,"\u002Fschemas\u002Fcollections":335,"\u002Fschemas\u002Fcollections-surround":1607},[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":54,"body":337,"description":1601,"extension":1602,"links":1603,"meta":1604,"navigation":523,"path":55,"seo":1605,"stem":56,"__hash__":1606},"docs\u002F2.schemas\u002F5.collections.md",{"type":338,"value":339,"toc":1594},"minimark",[340,470,482,486,683,773,777,780,901,907,911,935,1037,1041,1056,1155,1159,1171,1268,1288,1577,1590],[341,342,343,359],"table",{},[344,345,346],"thead",{},[347,348,349,353,356],"tr",{},[350,351,352],"th",{},"Constructor",[350,354,355],{},"JSON input",[350,357,358],{},"Output",[360,361,362,379,394,408,427,442,455],"tbody",{},[347,363,364,371,374],{},[365,366,367],"td",{},[368,369,370],"code",{},"vld::array(s)",[365,372,373],{},"array",[365,375,376],{},[368,377,378],{},"Vec\u003CT>",[347,380,381,386,389],{},[365,382,383],{},[368,384,385],{},"(a, b, …)",[365,387,388],{},"array of fixed length (1 to 12 items)",[365,390,391],{},[368,392,393],{},"(A, B, …)",[347,395,396,401,403],{},[365,397,398],{},[368,399,400],{},"vld::set(s)",[365,402,373],{},[365,404,405],{},[368,406,407],{},"HashSet\u003CT>",[347,409,410,415,422],{},[365,411,412],{},[368,413,414],{},"vld::map(k, v)",[365,416,417,418,421],{},"array of ",[368,419,420],{},"[key, value]"," pairs",[365,423,424],{},[368,425,426],{},"HashMap\u003CK, V>",[347,428,429,434,437],{},[365,430,431],{},[368,432,433],{},"vld::record(v)",[365,435,436],{},"object",[365,438,439],{},[368,440,441],{},"HashMap\u003CString, V>",[347,443,444,449,451],{},[365,445,446],{},[368,447,448],{},"vld::record_with_keys(k, v)",[365,450,436],{},[365,452,453],{},[368,454,426],{},[347,456,457,463,465],{},[365,458,459,462],{},[368,460,461],{},".ordered()"," on records",[365,464,436],{},[365,466,467],{},[368,468,469],{},"BTreeMap\u003C…>",[471,472,473,474,477,478,481],"p",{},"Element issues carry the index or key in their path (",[368,475,476],{},"[2]",", ",[368,479,480],{},".tags[0]",").",[483,484,485],"h2",{"id":373},"Array",[487,488,493],"pre",{"className":489,"code":490,"language":491,"meta":492,"style":492},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use vld::prelude::*;\n\nlet tags = vld::array(vld::string().min(1)).min_len(1).max_len(10).unique();\nassert!(tags.parse(r#\"[\"rust\", \"zod\"]\"#).is_ok());\n\nlet err = tags.parse(r#\"[\"a\", \"a\", \"\"]\"#).unwrap_err();\n\u002F\u002F not_unique at [1], too_small at [2]\n","rust","",[368,494,495,518,525,596,636,641,676],{"__ignoreMap":492},[496,497,500,504,508,512,515],"span",{"class":498,"line":499},"line",1,[496,501,503],{"class":502},"sbssI","use",[496,505,507],{"class":506},"sBMFI"," vld",[496,509,511],{"class":510},"sMK4o","::",[496,513,514],{"class":506},"prelude",[496,516,517],{"class":510},"::*;\n",[496,519,521],{"class":498,"line":520},2,[496,522,524],{"emptyLinePlaceholder":523},true,"\n",[496,526,528,532,536,539,541,543,546,549,552,554,557,560,563,565,568,571,574,576,578,580,583,585,588,590,593],{"class":498,"line":527},3,[496,529,531],{"class":530},"spNyl","let",[496,533,535],{"class":534},"sTEyZ"," tags ",[496,537,538],{"class":510},"=",[496,540,507],{"class":506},[496,542,511],{"class":510},[496,544,373],{"class":545},"s2Zo4",[496,547,548],{"class":510},"(",[496,550,551],{"class":506},"vld",[496,553,511],{"class":510},[496,555,556],{"class":545},"string",[496,558,559],{"class":510},"().",[496,561,562],{"class":545},"min",[496,564,548],{"class":510},[496,566,567],{"class":502},"1",[496,569,570],{"class":510},")).",[496,572,573],{"class":545},"min_len",[496,575,548],{"class":510},[496,577,567],{"class":502},[496,579,481],{"class":510},[496,581,582],{"class":545},"max_len",[496,584,548],{"class":510},[496,586,587],{"class":502},"10",[496,589,481],{"class":510},[496,591,592],{"class":545},"unique",[496,594,595],{"class":510},"();\n",[496,597,599,602,604,607,610,613,615,619,622,625,628,630,633],{"class":498,"line":598},4,[496,600,601],{"class":545},"assert!",[496,603,548],{"class":510},[496,605,606],{"class":534},"tags",[496,608,609],{"class":510},".",[496,611,612],{"class":545},"parse",[496,614,548],{"class":510},[496,616,618],{"class":617},"sfazB","r",[496,620,621],{"class":510},"#\"",[496,623,624],{"class":617},"[\"rust\", \"zod\"]",[496,626,627],{"class":510},"\"#",[496,629,481],{"class":510},[496,631,632],{"class":545},"is_ok",[496,634,635],{"class":510},"());\n",[496,637,639],{"class":498,"line":638},5,[496,640,524],{"emptyLinePlaceholder":523},[496,642,644,646,649,651,654,656,658,660,662,664,667,669,671,674],{"class":498,"line":643},6,[496,645,531],{"class":530},[496,647,648],{"class":534}," err ",[496,650,538],{"class":510},[496,652,653],{"class":534}," tags",[496,655,609],{"class":510},[496,657,612],{"class":545},[496,659,548],{"class":510},[496,661,618],{"class":617},[496,663,621],{"class":510},[496,665,666],{"class":617},"[\"a\", \"a\", \"\"]",[496,668,627],{"class":510},[496,670,481],{"class":510},[496,672,673],{"class":545},"unwrap_err",[496,675,595],{"class":510},[496,677,679],{"class":498,"line":678},7,[496,680,682],{"class":681},"sHwdD","\u002F\u002F not_unique at [1], too_small at [2]\n",[341,684,685,695],{},[344,686,687],{},[347,688,689,692],{},[350,690,691],{},"Method",[350,693,694],{},"Check",[360,696,697,714,726,743,753],{},[347,698,699,711],{},[365,700,701,704,705,704,708],{},[368,702,703],{},"min_len(n)"," \u002F ",[368,706,707],{},"max_len(n)",[368,709,710],{},"len(n)",[365,712,713],{},"number of items",[347,715,716,721],{},[365,717,718],{},[368,719,720],{},"non_empty()",[365,722,723],{},[368,724,725],{},"min_len(1)",[347,727,728,733],{},[365,729,730],{},[368,731,732],{},"unique()",[365,734,735,736,738,739,742],{},"no repeated items; numbers compare by value (",[368,737,567],{}," equals ",[368,740,741],{},"1.0","); each repeat is reported at its own index",[347,744,745,750],{},[365,746,747],{},[368,748,749],{},"contains(value)",[365,751,752],{},"the array holds this JSON value",[347,754,755,763],{},[365,756,757,704,760],{},[368,758,759],{},"min_contains(n)",[368,761,762],{},"max_contains(n)",[365,764,765,766,769,770,772],{},"how many times the ",[368,767,768],{},"contains"," value appears (no effect without ",[368,771,768],{},")",[483,774,776],{"id":775},"tuple","Tuple",[471,778,779],{},"A Rust tuple of schemas is itself a schema. Tuples from 1 to 12 elements are supported. The input must have exactly that many items.",[487,781,783],{"className":489,"code":782,"language":491,"meta":492,"style":492},"let point = (vld::number(), vld::number());\nassert_eq!(point.parse(\"[1.5, 2]\").unwrap(), (1.5, 2.0));\nassert!(point.parse(\"[1]\").is_err()); \u002F\u002F invalid_length (origin tuple)\n",[368,784,785,815,869],{"__ignoreMap":492},[496,786,787,789,792,794,797,799,801,804,807,809,811,813],{"class":498,"line":499},[496,788,531],{"class":530},[496,790,791],{"class":534}," point ",[496,793,538],{"class":510},[496,795,796],{"class":510}," (",[496,798,551],{"class":506},[496,800,511],{"class":510},[496,802,803],{"class":545},"number",[496,805,806],{"class":510},"(),",[496,808,507],{"class":506},[496,810,511],{"class":510},[496,812,803],{"class":545},[496,814,635],{"class":510},[496,816,817,820,822,825,827,829,831,834,837,839,841,844,846,848,850,852,855,858,861,863,866],{"class":498,"line":520},[496,818,819],{"class":545},"assert_eq!",[496,821,548],{"class":510},[496,823,824],{"class":534},"point",[496,826,609],{"class":510},[496,828,612],{"class":545},[496,830,548],{"class":510},[496,832,833],{"class":510},"\"",[496,835,836],{"class":617},"[1.5, 2]",[496,838,833],{"class":510},[496,840,481],{"class":510},[496,842,843],{"class":545},"unwrap",[496,845,806],{"class":510},[496,847,796],{"class":510},[496,849,567],{"class":502},[496,851,609],{"class":510},[496,853,854],{"class":502},"5",[496,856,857],{"class":510},",",[496,859,860],{"class":502}," 2",[496,862,609],{"class":510},[496,864,865],{"class":502},"0",[496,867,868],{"class":510},"));\n",[496,870,871,873,875,877,879,881,883,885,888,890,892,895,898],{"class":498,"line":527},[496,872,601],{"class":545},[496,874,548],{"class":510},[496,876,824],{"class":534},[496,878,609],{"class":510},[496,880,612],{"class":545},[496,882,548],{"class":510},[496,884,833],{"class":510},[496,886,887],{"class":617},"[1]",[496,889,833],{"class":510},[496,891,481],{"class":510},[496,893,894],{"class":545},"is_err",[496,896,897],{"class":510},"());",[496,899,900],{"class":681}," \u002F\u002F invalid_length (origin tuple)\n",[471,902,903,904,609],{},"JSON Schema uses ",[368,905,906],{},"prefixItems",[483,908,910],{"id":909},"set","Set",[471,912,913,915,916,919,920,923,924,704,927,930,931,934],{},[368,914,400],{}," reads an array into a ",[368,917,918],{},"HashSet",". Duplicates are merged silently (the JSON Schema has no ",[368,921,922],{},"uniqueItems","). ",[368,925,926],{},"min_size(n)",[368,928,929],{},"max_size(n)"," count ",[932,933,592],"strong",{}," items.",[487,936,938],{"className":489,"code":937,"language":491,"meta":492,"style":492},"let roles = vld::set(vld::enumeration(&[\"admin\", \"user\"])).min_size(1);\nassert_eq!(roles.parse(r#\"[\"user\", \"user\"]\"#).unwrap().len(), 1);\n",[368,939,940,997],{"__ignoreMap":492},[496,941,942,944,947,949,951,953,955,957,959,961,964,967,969,972,974,976,979,982,984,987,990,992,994],{"class":498,"line":499},[496,943,531],{"class":530},[496,945,946],{"class":534}," roles ",[496,948,538],{"class":510},[496,950,507],{"class":506},[496,952,511],{"class":510},[496,954,909],{"class":545},[496,956,548],{"class":510},[496,958,551],{"class":506},[496,960,511],{"class":510},[496,962,963],{"class":545},"enumeration",[496,965,966],{"class":510},"(&[",[496,968,833],{"class":510},[496,970,971],{"class":617},"admin",[496,973,833],{"class":510},[496,975,857],{"class":510},[496,977,978],{"class":510}," \"",[496,980,981],{"class":617},"user",[496,983,833],{"class":510},[496,985,986],{"class":510},"])).",[496,988,989],{"class":545},"min_size",[496,991,548],{"class":510},[496,993,567],{"class":502},[496,995,996],{"class":510},");\n",[496,998,999,1001,1003,1006,1008,1010,1012,1014,1016,1019,1021,1023,1025,1027,1030,1032,1035],{"class":498,"line":520},[496,1000,819],{"class":545},[496,1002,548],{"class":510},[496,1004,1005],{"class":534},"roles",[496,1007,609],{"class":510},[496,1009,612],{"class":545},[496,1011,548],{"class":510},[496,1013,618],{"class":617},[496,1015,621],{"class":510},[496,1017,1018],{"class":617},"[\"user\", \"user\"]",[496,1020,627],{"class":510},[496,1022,481],{"class":510},[496,1024,843],{"class":545},[496,1026,559],{"class":510},[496,1028,1029],{"class":545},"len",[496,1031,806],{"class":510},[496,1033,1034],{"class":502}," 1",[496,1036,996],{"class":510},[483,1038,1040],{"id":1039},"map","Map",[471,1042,1043,1045,1046,1048,1049,1052,1053,609],{},[368,1044,414],{}," reads an array of ",[368,1047,420],{}," pairs, so keys can be any schema, not only strings. A repeated key fails with ",[368,1050,1051],{},"duplicate_key","; an entry that is not a pair fails with ",[368,1054,1055],{},"invalid_map_entry",[487,1057,1059],{"className":489,"code":1058,"language":491,"meta":492,"style":492},"let scores = vld::map(vld::u32(), vld::string());\nlet m = scores.parse(r#\"[[1, \"one\"], [2, \"two\"]]\"#).unwrap();\nassert_eq!(m[&2], \"two\");\n",[368,1060,1061,1095,1128],{"__ignoreMap":492},[496,1062,1063,1065,1068,1070,1072,1074,1076,1078,1080,1082,1085,1087,1089,1091,1093],{"class":498,"line":499},[496,1064,531],{"class":530},[496,1066,1067],{"class":534}," scores ",[496,1069,538],{"class":510},[496,1071,507],{"class":506},[496,1073,511],{"class":510},[496,1075,1039],{"class":545},[496,1077,548],{"class":510},[496,1079,551],{"class":506},[496,1081,511],{"class":510},[496,1083,1084],{"class":545},"u32",[496,1086,806],{"class":510},[496,1088,507],{"class":506},[496,1090,511],{"class":510},[496,1092,556],{"class":545},[496,1094,635],{"class":510},[496,1096,1097,1099,1102,1104,1107,1109,1111,1113,1115,1117,1120,1122,1124,1126],{"class":498,"line":520},[496,1098,531],{"class":530},[496,1100,1101],{"class":534}," m ",[496,1103,538],{"class":510},[496,1105,1106],{"class":534}," scores",[496,1108,609],{"class":510},[496,1110,612],{"class":545},[496,1112,548],{"class":510},[496,1114,618],{"class":617},[496,1116,621],{"class":510},[496,1118,1119],{"class":617},"[[1, \"one\"], [2, \"two\"]]",[496,1121,627],{"class":510},[496,1123,481],{"class":510},[496,1125,843],{"class":545},[496,1127,595],{"class":510},[496,1129,1130,1132,1134,1137,1140,1143,1146,1148,1151,1153],{"class":498,"line":527},[496,1131,819],{"class":545},[496,1133,548],{"class":510},[496,1135,1136],{"class":534},"m",[496,1138,1139],{"class":510},"[&",[496,1141,1142],{"class":502},"2",[496,1144,1145],{"class":510},"],",[496,1147,978],{"class":510},[496,1149,1150],{"class":617},"two",[496,1152,833],{"class":510},[496,1154,996],{"class":510},[483,1156,1158],{"id":1157},"record","Record",[471,1160,1161,1163,1164,704,1167,1170],{},[368,1162,433],{}," reads a JSON object and validates every value. ",[368,1165,1166],{},"min_keys(n)",[368,1168,1169],{},"max_keys(n)"," bound the number of keys.",[487,1172,1174],{"className":489,"code":1173,"language":491,"meta":492,"style":492},"let prices = vld::record(vld::number().positive()).max_keys(100);\nlet map = prices.parse(r#\"{\"apple\": 1.2, \"pear\": 0.8}\"#).unwrap();\nassert_eq!(map.len(), 2);\n",[368,1175,1176,1217,1250],{"__ignoreMap":492},[496,1177,1178,1180,1183,1185,1187,1189,1191,1193,1195,1197,1199,1201,1204,1207,1210,1212,1215],{"class":498,"line":499},[496,1179,531],{"class":530},[496,1181,1182],{"class":534}," prices ",[496,1184,538],{"class":510},[496,1186,507],{"class":506},[496,1188,511],{"class":510},[496,1190,1157],{"class":545},[496,1192,548],{"class":510},[496,1194,551],{"class":506},[496,1196,511],{"class":510},[496,1198,803],{"class":545},[496,1200,559],{"class":510},[496,1202,1203],{"class":545},"positive",[496,1205,1206],{"class":510},"()).",[496,1208,1209],{"class":545},"max_keys",[496,1211,548],{"class":510},[496,1213,1214],{"class":502},"100",[496,1216,996],{"class":510},[496,1218,1219,1221,1224,1226,1229,1231,1233,1235,1237,1239,1242,1244,1246,1248],{"class":498,"line":520},[496,1220,531],{"class":530},[496,1222,1223],{"class":534}," map ",[496,1225,538],{"class":510},[496,1227,1228],{"class":534}," prices",[496,1230,609],{"class":510},[496,1232,612],{"class":545},[496,1234,548],{"class":510},[496,1236,618],{"class":617},[496,1238,621],{"class":510},[496,1240,1241],{"class":617},"{\"apple\": 1.2, \"pear\": 0.8}",[496,1243,627],{"class":510},[496,1245,481],{"class":510},[496,1247,843],{"class":545},[496,1249,595],{"class":510},[496,1251,1252,1254,1256,1258,1260,1262,1264,1266],{"class":498,"line":527},[496,1253,819],{"class":545},[496,1255,548],{"class":510},[496,1257,1039],{"class":534},[496,1259,609],{"class":510},[496,1261,1029],{"class":545},[496,1263,806],{"class":510},[496,1265,860],{"class":502},[496,1267,996],{"class":510},[471,1269,1270,1273,1274,1276,1277,477,1280,1283,1284,1287],{},[368,1271,1272],{},"vld::record_with_keys(key_schema, value_schema)"," also validates and converts keys. Each key is passed to the key schema as a JSON ",[932,1275,556],{},", so use string schemas, ",[368,1278,1279],{},"enumeration()",[368,1281,1282],{},"enum_of()"," or ",[368,1285,1286],{},"from_str()"," (for numeric keys):",[487,1289,1291],{"className":489,"code":1290,"language":491,"meta":492,"style":492},"use std::collections::HashMap;\n\nlet scores = vld::record_with_keys(vld::from_str::\u003Cu32>(), vld::number());\nlet map: HashMap\u003Cu32, f64> = scores.parse(r#\"{\"1\": 9.5, \"2\": 7}\"#).unwrap();\nassert_eq!(map[&1], 9.5);\n\nlet by_role = vld::record_with_keys(vld::enumeration(&[\"admin\", \"user\"]), vld::boolean()).ordered();\nlet m = by_role.parse(r#\"{\"user\": true, \"admin\": false}\"#).unwrap();\nassert_eq!(m.keys().collect::\u003CVec\u003C_>>(), [\"admin\", \"user\"]);\n",[368,1292,1293,1313,1317,1357,1409,1432,1436,1492,1525],{"__ignoreMap":492},[496,1294,1295,1297,1300,1302,1305,1307,1310],{"class":498,"line":499},[496,1296,503],{"class":502},[496,1298,1299],{"class":506}," std",[496,1301,511],{"class":510},[496,1303,1304],{"class":506},"collections",[496,1306,511],{"class":510},[496,1308,1309],{"class":506},"HashMap",[496,1311,1312],{"class":510},";\n",[496,1314,1315],{"class":498,"line":520},[496,1316,524],{"emptyLinePlaceholder":523},[496,1318,1319,1321,1323,1325,1327,1329,1332,1334,1336,1338,1341,1344,1346,1349,1351,1353,1355],{"class":498,"line":527},[496,1320,531],{"class":530},[496,1322,1067],{"class":534},[496,1324,538],{"class":510},[496,1326,507],{"class":506},[496,1328,511],{"class":510},[496,1330,1331],{"class":545},"record_with_keys",[496,1333,548],{"class":510},[496,1335,551],{"class":506},[496,1337,511],{"class":510},[496,1339,1340],{"class":545},"from_str",[496,1342,1343],{"class":510},"::\u003C",[496,1345,1084],{"class":506},[496,1347,1348],{"class":510},">(),",[496,1350,507],{"class":506},[496,1352,511],{"class":510},[496,1354,803],{"class":545},[496,1356,635],{"class":510},[496,1358,1359,1361,1364,1367,1370,1373,1375,1377,1380,1383,1386,1388,1390,1392,1394,1396,1398,1401,1403,1405,1407],{"class":498,"line":598},[496,1360,531],{"class":530},[496,1362,1363],{"class":534}," map",[496,1365,1366],{"class":510},":",[496,1368,1369],{"class":506}," HashMap",[496,1371,1372],{"class":510},"\u003C",[496,1374,1084],{"class":506},[496,1376,857],{"class":510},[496,1378,1379],{"class":506}," f64",[496,1381,1382],{"class":510},">",[496,1384,1385],{"class":510}," =",[496,1387,1106],{"class":534},[496,1389,609],{"class":510},[496,1391,612],{"class":545},[496,1393,548],{"class":510},[496,1395,618],{"class":617},[496,1397,621],{"class":510},[496,1399,1400],{"class":617},"{\"1\": 9.5, \"2\": 7}",[496,1402,627],{"class":510},[496,1404,481],{"class":510},[496,1406,843],{"class":545},[496,1408,595],{"class":510},[496,1410,1411,1413,1415,1417,1419,1421,1423,1426,1428,1430],{"class":498,"line":638},[496,1412,819],{"class":545},[496,1414,548],{"class":510},[496,1416,1039],{"class":534},[496,1418,1139],{"class":510},[496,1420,567],{"class":502},[496,1422,1145],{"class":510},[496,1424,1425],{"class":502}," 9",[496,1427,609],{"class":510},[496,1429,854],{"class":502},[496,1431,996],{"class":510},[496,1433,1434],{"class":498,"line":643},[496,1435,524],{"emptyLinePlaceholder":523},[496,1437,1438,1440,1443,1445,1447,1449,1451,1453,1455,1457,1459,1461,1463,1465,1467,1469,1471,1473,1475,1478,1480,1482,1485,1487,1490],{"class":498,"line":678},[496,1439,531],{"class":530},[496,1441,1442],{"class":534}," by_role ",[496,1444,538],{"class":510},[496,1446,507],{"class":506},[496,1448,511],{"class":510},[496,1450,1331],{"class":545},[496,1452,548],{"class":510},[496,1454,551],{"class":506},[496,1456,511],{"class":510},[496,1458,963],{"class":545},[496,1460,966],{"class":510},[496,1462,833],{"class":510},[496,1464,971],{"class":617},[496,1466,833],{"class":510},[496,1468,857],{"class":510},[496,1470,978],{"class":510},[496,1472,981],{"class":617},[496,1474,833],{"class":510},[496,1476,1477],{"class":510},"]),",[496,1479,507],{"class":506},[496,1481,511],{"class":510},[496,1483,1484],{"class":545},"boolean",[496,1486,1206],{"class":510},[496,1488,1489],{"class":545},"ordered",[496,1491,595],{"class":510},[496,1493,1495,1497,1499,1501,1504,1506,1508,1510,1512,1514,1517,1519,1521,1523],{"class":498,"line":1494},8,[496,1496,531],{"class":530},[496,1498,1101],{"class":534},[496,1500,538],{"class":510},[496,1502,1503],{"class":534}," by_role",[496,1505,609],{"class":510},[496,1507,612],{"class":545},[496,1509,548],{"class":510},[496,1511,618],{"class":617},[496,1513,621],{"class":510},[496,1515,1516],{"class":617},"{\"user\": true, \"admin\": false}",[496,1518,627],{"class":510},[496,1520,481],{"class":510},[496,1522,843],{"class":545},[496,1524,595],{"class":510},[496,1526,1528,1530,1532,1534,1536,1539,1541,1544,1546,1549,1551,1554,1557,1560,1562,1564,1566,1568,1570,1572,1574],{"class":498,"line":1527},9,[496,1529,819],{"class":545},[496,1531,548],{"class":510},[496,1533,1136],{"class":534},[496,1535,609],{"class":510},[496,1537,1538],{"class":545},"keys",[496,1540,559],{"class":510},[496,1542,1543],{"class":545},"collect",[496,1545,1343],{"class":510},[496,1547,1548],{"class":506},"Vec",[496,1550,1372],{"class":510},[496,1552,1553],{"class":534},"_",[496,1555,1556],{"class":510},">>(),",[496,1558,1559],{"class":510}," [",[496,1561,833],{"class":510},[496,1563,971],{"class":617},[496,1565,833],{"class":510},[496,1567,857],{"class":510},[496,1569,978],{"class":510},[496,1571,981],{"class":617},[496,1573,833],{"class":510},[496,1575,1576],{"class":510},"]);\n",[471,1578,1579,1581,1582,1585,1586,1589],{},[368,1580,461],{}," returns a ",[368,1583,1584],{},"BTreeMap"," with sorted keys (type alias ",[368,1587,1588],{},"ZOrderedRecord","). If two keys parse to the same output key, the later one wins.",[1591,1592,1593],"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":492,"searchDepth":520,"depth":527,"links":1595},[1596,1597,1598,1599,1600],{"id":373,"depth":520,"text":485},{"id":775,"depth":520,"text":776},{"id":909,"depth":520,"text":910},{"id":1039,"depth":520,"text":1040},{"id":1157,"depth":520,"text":1158},"Arrays, tuples, sets, maps and records.","md",null,{},{"title":54,"description":1601},"qEKUYd3UqIcJtGUeheeWoiULRZ-Z2XH0JVL-4VT-Ezs",[1608,1610],{"title":50,"path":51,"stem":52,"description":1609,"children":-1},"Typed dates, datetimes and times of day with chrono, jiff or time; strict grammar, offsets, ranges and past\u002Ffuture checks.",{"title":58,"path":59,"stem":60,"description":1611,"children":-1},"vld::object() — runtime-defined objects with unknown-key modes, catchall, partial, pick\u002Fomit, extend\u002Fmerge and conditional rules.",1794036358943]