[{"data":1,"prerenderedAt":1638},["ShallowReactive",2],{"navigation":3,"\u002Fintegrations\u002Fopenapi\u002Fschemars":335,"\u002Fintegrations\u002Fopenapi\u002Fschemars-surround":1633},[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":202,"body":337,"description":1619,"extension":1620,"links":1621,"meta":1630,"navigation":678,"path":203,"seo":1631,"stem":204,"__hash__":1632},"docs\u002F6.integrations\u002F2.openapi\u002F2.schemars.md",{"type":338,"value":339,"toc":1612},"minimark",[340,352,391,396,492,495,556,560,613,624,631,635,1295,1299,1509,1513,1599,1608],[341,342,343,344,348,349,351],"p",{},"Many crates (aide, okapi, paperclip, …) consume ",[345,346,347],"code",{},"schemars::JsonSchema",". ",[345,350,202],{}," connects them to vld in both directions:",[353,354,355,374],"ul",{},[356,357,358,362,363,366,367,369,370,373],"li",{},[359,360,361],"strong",{},"vld → schemars",": ",[345,364,365],{},"impl_json_schema!(T)"," implements ",[345,368,347],{}," from the vld ",[345,371,372],{},"json_schema()",".",[356,375,376,362,379,382,383,386,387,390],{},[359,377,378],{},"schemars → vld",[345,380,381],{},"impl_vld_parse!(T)"," validates a ",[345,384,385],{},"#[derive(JsonSchema)]"," type against its schemars schema and implements ",[345,388,389],{},"vld::schema::VldParse",", so it works with vld web extractors.",[392,393,395],"h2",{"id":394},"install","Install",[397,398,404],"pre",{"className":399,"code":400,"filename":401,"language":402,"meta":403,"style":403},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[dependencies]\nvld = { version = \"0.5\", features = [\"openapi\"] }\nvld-schemars = \"0.5\"   # schemars 0.9-0.x (default)\n","Cargo.toml","toml","",[345,405,406,422,474],{"__ignoreMap":403},[407,408,411,415,419],"span",{"class":409,"line":410},"line",1,[407,412,414],{"class":413},"sMK4o","[",[407,416,418],{"class":417},"sBMFI","dependencies",[407,420,421],{"class":413},"]\n",[407,423,425,429,432,435,438,440,443,447,450,453,456,458,461,463,466,468,471],{"class":409,"line":424},2,[407,426,428],{"class":427},"sTEyZ","vld ",[407,430,431],{"class":413},"=",[407,433,434],{"class":413}," {",[407,436,437],{"class":427}," version ",[407,439,431],{"class":413},[407,441,442],{"class":413}," \"",[407,444,446],{"class":445},"sfazB","0.5",[407,448,449],{"class":413},"\"",[407,451,452],{"class":413},",",[407,454,455],{"class":427}," features ",[407,457,431],{"class":413},[407,459,460],{"class":413}," [",[407,462,449],{"class":413},[407,464,465],{"class":445},"openapi",[407,467,449],{"class":413},[407,469,470],{"class":413},"]",[407,472,473],{"class":413}," }\n",[407,475,477,480,482,484,486,488],{"class":409,"line":476},3,[407,478,479],{"class":427},"vld-schemars ",[407,481,431],{"class":413},[407,483,442],{"class":413},[407,485,446],{"class":445},[407,487,449],{"class":413},[407,489,491],{"class":490},"sHwdD","   # schemars 0.9-0.x (default)\n",[341,493,494],{},"schemars 1.x:",[397,496,498],{"className":399,"code":497,"filename":401,"language":402,"meta":403,"style":403},"[dependencies]\nvld-schemars = { version = \"0.5\", default-features = false, features = [\"schemars-1\"] }\n",[345,499,500,508],{"__ignoreMap":403},[407,501,502,504,506],{"class":409,"line":410},[407,503,414],{"class":413},[407,505,418],{"class":417},[407,507,421],{"class":413},[407,509,510,512,514,516,518,520,522,524,526,528,531,533,537,539,541,543,545,547,550,552,554],{"class":409,"line":424},[407,511,479],{"class":427},[407,513,431],{"class":413},[407,515,434],{"class":413},[407,517,437],{"class":427},[407,519,431],{"class":413},[407,521,442],{"class":413},[407,523,446],{"class":445},[407,525,449],{"class":413},[407,527,452],{"class":413},[407,529,530],{"class":427}," default-features ",[407,532,431],{"class":413},[407,534,536],{"class":535},"sfNiH"," false",[407,538,452],{"class":413},[407,540,455],{"class":427},[407,542,431],{"class":413},[407,544,460],{"class":413},[407,546,449],{"class":413},[407,548,549],{"class":445},"schemars-1",[407,551,449],{"class":413},[407,553,470],{"class":413},[407,555,473],{"class":413},[392,557,559],{"id":558},"features","Features",[561,562,563,579],"table",{},[564,565,566],"thead",{},[567,568,569,573,576],"tr",{},[570,571,572],"th",{},"Feature",[570,574,575],{},"Default",[570,577,578],{},"Description",[580,581,582,599],"tbody",{},[567,583,584,590,593],{},[585,586,587],"td",{},[345,588,589],{},"schemars-0",[585,591,592],{},"yes",[585,594,595,596],{},"schemars ",[345,597,598],{},">=0.9, \u003C1",[567,600,601,605,608],{},[585,602,603],{},[345,604,549],{},[585,606,607],{},"no",[585,609,595,610],{},[345,611,612],{},">=1, \u003C2",[341,614,615,616,619,620,623],{},"Enable exactly one. The selected crate is re-exported as ",[345,617,618],{},"vld_schemars::schemars","; derive with ",[345,621,622],{},"vld_schemars::schemars::JsonSchema"," to be sure the versions match.",[341,625,626,627,630],{},"MSRV: 1.85 for both features (see ",[628,629,23],"a",{"href":24},").",[392,632,634],{"id":633},"example","Example",[397,636,640],{"className":637,"code":638,"language":639,"meta":403,"style":403},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use vld_schemars::prelude::*;\nuse vld_schemars::schemars;\n\n\u002F\u002F vld -> schemars\nvld::schema! {\n    #[derive(Debug)]\n    pub struct UserSchema {\n        pub name: String  => vld::string().min(2).max(100),\n        pub email: String => vld::string().email(),\n        pub age: i64      => vld::number().int().min(0).max(150),\n    }\n}\nimpl_json_schema!(UserSchema);\n\nlet mut gen = schemars::SchemaGenerator::default();\nlet schema = \u003CUserSchema as schemars::JsonSchema>::json_schema(&mut gen);\nassert_eq!(schema.as_value()[\"properties\"][\"email\"][\"format\"], \"email\");\n\n\u002F\u002F schemars -> vld\n#[derive(Debug, serde::Serialize, serde::Deserialize, schemars::JsonSchema)]\nstruct Product {\n    name: String,\n    price: f64,\n}\nimpl_vld_parse!(Product);\n\nlet json = serde_json::json!({\"name\": \"Widget\", \"price\": 9.99});\nlet product = Product::vld_parse(&json).unwrap();       \u002F\u002F validate + deserialize\nassert!(product.vld_validate().is_ok());                 \u002F\u002F validate an instance\nassert!(Product::vld_validate_json(&serde_json::json!({\"name\": 1})).is_err());\n","rust",[345,641,642,660,674,680,686,701,719,734,784,813,861,867,873,887,892,923,964,1019,1024,1030,1071,1082,1095,1108,1113,1126,1131,1190,1223,1250],{"__ignoreMap":403},[407,643,644,648,651,654,657],{"class":409,"line":410},[407,645,647],{"class":646},"sbssI","use",[407,649,650],{"class":417}," vld_schemars",[407,652,653],{"class":413},"::",[407,655,656],{"class":417},"prelude",[407,658,659],{"class":413},"::*;\n",[407,661,662,664,666,668,671],{"class":409,"line":424},[407,663,647],{"class":646},[407,665,650],{"class":417},[407,667,653],{"class":413},[407,669,670],{"class":417},"schemars",[407,672,673],{"class":413},";\n",[407,675,676],{"class":409,"line":476},[407,677,679],{"emptyLinePlaceholder":678},true,"\n",[407,681,683],{"class":409,"line":682},4,[407,684,685],{"class":490},"\u002F\u002F vld -> schemars\n",[407,687,689,692,694,698],{"class":409,"line":688},5,[407,690,691],{"class":417},"vld",[407,693,653],{"class":413},[407,695,697],{"class":696},"s2Zo4","schema!",[407,699,700],{"class":413}," {\n",[407,702,704,707,710,713,716],{"class":409,"line":703},6,[407,705,706],{"class":413},"    #[",[407,708,709],{"class":427},"derive",[407,711,712],{"class":413},"(",[407,714,715],{"class":417},"Debug",[407,717,718],{"class":413},")]\n",[407,720,722,726,729,732],{"class":409,"line":721},7,[407,723,725],{"class":724},"spNyl","    pub",[407,727,728],{"class":724}," struct",[407,730,731],{"class":417}," UserSchema",[407,733,700],{"class":413},[407,735,737,740,743,746,749,752,755,757,760,763,766,768,771,773,776,778,781],{"class":409,"line":736},8,[407,738,739],{"class":724},"        pub",[407,741,742],{"class":427}," name",[407,744,745],{"class":413},":",[407,747,748],{"class":417}," String",[407,750,751],{"class":413},"  =>",[407,753,754],{"class":417}," vld",[407,756,653],{"class":413},[407,758,759],{"class":696},"string",[407,761,762],{"class":413},"().",[407,764,765],{"class":696},"min",[407,767,712],{"class":413},[407,769,770],{"class":646},"2",[407,772,630],{"class":413},[407,774,775],{"class":696},"max",[407,777,712],{"class":413},[407,779,780],{"class":646},"100",[407,782,783],{"class":413},"),\n",[407,785,787,789,792,794,796,799,801,803,805,807,810],{"class":409,"line":786},9,[407,788,739],{"class":724},[407,790,791],{"class":427}," email",[407,793,745],{"class":413},[407,795,748],{"class":417},[407,797,798],{"class":413}," =>",[407,800,754],{"class":417},[407,802,653],{"class":413},[407,804,759],{"class":696},[407,806,762],{"class":413},[407,808,809],{"class":696},"email",[407,811,812],{"class":413},"(),\n",[407,814,816,818,821,823,826,829,831,833,836,838,841,843,845,847,850,852,854,856,859],{"class":409,"line":815},10,[407,817,739],{"class":724},[407,819,820],{"class":427}," age",[407,822,745],{"class":413},[407,824,825],{"class":417}," i64",[407,827,828],{"class":413},"      =>",[407,830,754],{"class":417},[407,832,653],{"class":413},[407,834,835],{"class":696},"number",[407,837,762],{"class":413},[407,839,840],{"class":696},"int",[407,842,762],{"class":413},[407,844,765],{"class":696},[407,846,712],{"class":413},[407,848,849],{"class":646},"0",[407,851,630],{"class":413},[407,853,775],{"class":696},[407,855,712],{"class":413},[407,857,858],{"class":646},"150",[407,860,783],{"class":413},[407,862,864],{"class":409,"line":863},11,[407,865,866],{"class":413},"    }\n",[407,868,870],{"class":409,"line":869},12,[407,871,872],{"class":413},"}\n",[407,874,876,879,881,884],{"class":409,"line":875},13,[407,877,878],{"class":696},"impl_json_schema!",[407,880,712],{"class":413},[407,882,883],{"class":417},"UserSchema",[407,885,886],{"class":413},");\n",[407,888,890],{"class":409,"line":889},14,[407,891,679],{"emptyLinePlaceholder":678},[407,893,895,898,901,904,907,910,912,915,917,920],{"class":409,"line":894},15,[407,896,897],{"class":724},"let",[407,899,900],{"class":724}," mut",[407,902,903],{"class":646}," gen",[407,905,906],{"class":413}," =",[407,908,909],{"class":417}," schemars",[407,911,653],{"class":413},[407,913,914],{"class":417},"SchemaGenerator",[407,916,653],{"class":413},[407,918,919],{"class":696},"default",[407,921,922],{"class":413},"();\n",[407,924,926,928,931,933,936,938,941,943,945,948,951,954,957,960,962],{"class":409,"line":925},16,[407,927,897],{"class":724},[407,929,930],{"class":427}," schema ",[407,932,431],{"class":413},[407,934,935],{"class":413}," \u003C",[407,937,883],{"class":417},[407,939,940],{"class":646}," as",[407,942,909],{"class":417},[407,944,653],{"class":413},[407,946,947],{"class":417},"JsonSchema",[407,949,950],{"class":413},">::",[407,952,953],{"class":696},"json_schema",[407,955,956],{"class":413},"(&",[407,958,959],{"class":724},"mut",[407,961,903],{"class":646},[407,963,886],{"class":413},[407,965,967,970,972,975,977,980,983,985,988,990,993,995,997,999,1001,1003,1006,1008,1011,1013,1015,1017],{"class":409,"line":966},17,[407,968,969],{"class":696},"assert_eq!",[407,971,712],{"class":413},[407,973,974],{"class":427},"schema",[407,976,373],{"class":413},[407,978,979],{"class":696},"as_value",[407,981,982],{"class":413},"()[",[407,984,449],{"class":413},[407,986,987],{"class":445},"properties",[407,989,449],{"class":413},[407,991,992],{"class":413},"][",[407,994,449],{"class":413},[407,996,809],{"class":445},[407,998,449],{"class":413},[407,1000,992],{"class":413},[407,1002,449],{"class":413},[407,1004,1005],{"class":445},"format",[407,1007,449],{"class":413},[407,1009,1010],{"class":413},"],",[407,1012,442],{"class":413},[407,1014,809],{"class":445},[407,1016,449],{"class":413},[407,1018,886],{"class":413},[407,1020,1022],{"class":409,"line":1021},18,[407,1023,679],{"emptyLinePlaceholder":678},[407,1025,1027],{"class":409,"line":1026},19,[407,1028,1029],{"class":490},"\u002F\u002F schemars -> vld\n",[407,1031,1033,1036,1038,1040,1042,1044,1047,1049,1052,1054,1056,1058,1061,1063,1065,1067,1069],{"class":409,"line":1032},20,[407,1034,1035],{"class":413},"#[",[407,1037,709],{"class":427},[407,1039,712],{"class":413},[407,1041,715],{"class":417},[407,1043,452],{"class":413},[407,1045,1046],{"class":427}," serde",[407,1048,653],{"class":413},[407,1050,1051],{"class":417},"Serialize",[407,1053,452],{"class":413},[407,1055,1046],{"class":427},[407,1057,653],{"class":413},[407,1059,1060],{"class":417},"Deserialize",[407,1062,452],{"class":413},[407,1064,909],{"class":427},[407,1066,653],{"class":413},[407,1068,947],{"class":417},[407,1070,718],{"class":413},[407,1072,1074,1077,1080],{"class":409,"line":1073},21,[407,1075,1076],{"class":724},"struct",[407,1078,1079],{"class":417}," Product",[407,1081,700],{"class":413},[407,1083,1085,1088,1090,1092],{"class":409,"line":1084},22,[407,1086,1087],{"class":427},"    name",[407,1089,745],{"class":413},[407,1091,748],{"class":417},[407,1093,1094],{"class":413},",\n",[407,1096,1098,1101,1103,1106],{"class":409,"line":1097},23,[407,1099,1100],{"class":427},"    price",[407,1102,745],{"class":413},[407,1104,1105],{"class":417}," f64",[407,1107,1094],{"class":413},[407,1109,1111],{"class":409,"line":1110},24,[407,1112,872],{"class":413},[407,1114,1116,1119,1121,1124],{"class":409,"line":1115},25,[407,1117,1118],{"class":696},"impl_vld_parse!",[407,1120,712],{"class":413},[407,1122,1123],{"class":417},"Product",[407,1125,886],{"class":413},[407,1127,1129],{"class":409,"line":1128},26,[407,1130,679],{"emptyLinePlaceholder":678},[407,1132,1134,1136,1139,1141,1144,1146,1149,1152,1154,1157,1159,1161,1163,1166,1168,1170,1172,1175,1177,1179,1182,1184,1187],{"class":409,"line":1133},27,[407,1135,897],{"class":724},[407,1137,1138],{"class":427}," json ",[407,1140,431],{"class":413},[407,1142,1143],{"class":417}," serde_json",[407,1145,653],{"class":413},[407,1147,1148],{"class":696},"json!",[407,1150,1151],{"class":413},"({",[407,1153,449],{"class":413},[407,1155,1156],{"class":445},"name",[407,1158,449],{"class":413},[407,1160,745],{"class":413},[407,1162,442],{"class":413},[407,1164,1165],{"class":445},"Widget",[407,1167,449],{"class":413},[407,1169,452],{"class":413},[407,1171,442],{"class":413},[407,1173,1174],{"class":445},"price",[407,1176,449],{"class":413},[407,1178,745],{"class":413},[407,1180,1181],{"class":646}," 9",[407,1183,373],{"class":413},[407,1185,1186],{"class":646},"99",[407,1188,1189],{"class":413},"});\n",[407,1191,1193,1195,1198,1200,1202,1204,1207,1209,1212,1214,1217,1220],{"class":409,"line":1192},28,[407,1194,897],{"class":724},[407,1196,1197],{"class":427}," product ",[407,1199,431],{"class":413},[407,1201,1079],{"class":417},[407,1203,653],{"class":413},[407,1205,1206],{"class":696},"vld_parse",[407,1208,956],{"class":413},[407,1210,1211],{"class":427},"json",[407,1213,630],{"class":413},[407,1215,1216],{"class":696},"unwrap",[407,1218,1219],{"class":413},"();",[407,1221,1222],{"class":490},"       \u002F\u002F validate + deserialize\n",[407,1224,1226,1229,1231,1234,1236,1239,1241,1244,1247],{"class":409,"line":1225},29,[407,1227,1228],{"class":696},"assert!",[407,1230,712],{"class":413},[407,1232,1233],{"class":427},"product",[407,1235,373],{"class":413},[407,1237,1238],{"class":696},"vld_validate",[407,1240,762],{"class":413},[407,1242,1243],{"class":696},"is_ok",[407,1245,1246],{"class":413},"());",[407,1248,1249],{"class":490},"                 \u002F\u002F validate an instance\n",[407,1251,1253,1255,1257,1259,1261,1264,1266,1269,1271,1273,1275,1277,1279,1281,1283,1286,1289,1292],{"class":409,"line":1252},30,[407,1254,1228],{"class":696},[407,1256,712],{"class":413},[407,1258,1123],{"class":417},[407,1260,653],{"class":413},[407,1262,1263],{"class":696},"vld_validate_json",[407,1265,956],{"class":413},[407,1267,1268],{"class":417},"serde_json",[407,1270,653],{"class":413},[407,1272,1148],{"class":696},[407,1274,1151],{"class":413},[407,1276,449],{"class":413},[407,1278,1156],{"class":445},[407,1280,449],{"class":413},[407,1282,745],{"class":413},[407,1284,1285],{"class":646}," 1",[407,1287,1288],{"class":413},"})).",[407,1290,1291],{"class":696},"is_err",[407,1293,1294],{"class":413},"());\n",[392,1296,1298],{"id":1297},"api","API",[561,1300,1301,1310],{},[564,1302,1303],{},[567,1304,1305,1308],{},[570,1306,1307],{},"Item",[570,1309,578],{},[580,1311,1312,1327,1343,1361,1379,1389,1406,1426,1442,1452,1477,1493],{},[567,1313,1314,1322],{},[585,1315,1316,1318,1319],{},[345,1317,365],{}," \u002F ",[345,1320,1321],{},"impl_json_schema!(T, \"Name\")",[585,1323,1324,1326],{},[345,1325,347],{}," for a vld type; nested types are added to the generator's definitions",[567,1328,1329,1333],{},[585,1330,1331],{},[345,1332,381],{},[585,1334,1335,1338,1339,1342],{},[345,1336,1337],{},"VldParse"," + ",[345,1340,1341],{},"SchemarsValidate"," for a schemars type",[567,1344,1345,1349],{},[585,1346,1347],{},[345,1348,1341],{},[585,1350,1351,1354,1355,1354,1358],{},[345,1352,1353],{},"vld_validate(&self)",", ",[345,1356,1357],{},"vld_validate_json(&Value)",[345,1359,1360],{},"vld_parse(&Value)",[567,1362,1363,1368],{},[585,1364,1365],{},[345,1366,1367],{},"vld_to_schemars(&Value)",[585,1369,1370,1371,1374,1375,1378],{},"JSON Schema value → ",[345,1372,1373],{},"schemars::Schema"," (a non-schema value becomes ",[345,1376,1377],{},"false",")",[567,1380,1381,1386],{},[585,1382,1383],{},[345,1384,1385],{},"try_vld_to_schemars(&Value)",[585,1387,1388],{},"Same, returns an error for a non-schema value",[567,1390,1391,1396],{},[585,1392,1393],{},[345,1394,1395],{},"vld_schema_to_schemars(&Value)",[585,1397,1398,1399,1402,1403,1405],{},"Alias of ",[345,1400,1401],{},"vld_to_schemars"," for a ",[345,1404,372],{}," result",[567,1407,1408,1419],{},[585,1409,1410,1354,1413,1354,1416],{},[345,1411,1412],{},"schemars_to_json",[345,1414,1415],{},"generate_from_schemars::\u003CT>()",[345,1417,1418],{},"generate_schemars::\u003CT>()",[585,1420,1421,1422,1425],{},"schemars → ",[345,1423,1424],{},"serde_json::Value"," \u002F root schema",[567,1427,1428,1436],{},[585,1429,1430,1318,1433],{},[345,1431,1432],{},"validate_with_schema(&schema, &value)",[345,1434,1435],{},"validate_with_schemars",[585,1437,1438,1439],{},"Validate JSON against a JSON Schema, issues as ",[345,1440,1441],{},"VldError",[567,1443,1444,1449],{},[585,1445,1446],{},[345,1447,1448],{},"to_openapi3(&mut Value)",[585,1450,1451],{},"Rewrite vld's 2020-12 output into the OpenAPI 3.0 dialect",[567,1453,1454,1474],{},[585,1455,1456,1354,1459,1354,1462,1354,1465,1354,1468,1354,1471],{},[345,1457,1458],{},"list_properties",[345,1460,1461],{},"list_properties_schemars",[345,1463,1464],{},"PropertyInfo",[345,1466,1467],{},"schema_type",[345,1469,1470],{},"is_required",[345,1472,1473],{},"get_property",[585,1475,1476],{},"Introspection helpers",[567,1478,1479,1490],{},[585,1480,1481,1354,1484,1354,1487],{},[345,1482,1483],{},"schemas_equal",[345,1485,1486],{},"merge_schemas",[345,1488,1489],{},"overlay_constraints",[585,1491,1492],{},"Compare \u002F combine schemas",[567,1494,1495,1500],{},[585,1496,1497],{},[345,1498,1499],{},"VldSchemarsError",[585,1501,1502,1505,1506],{},[345,1503,1504],{},"Validation(VldError)"," or ",[345,1507,1508],{},"Deserialization(String)",[392,1510,1512],{"id":1511},"gotchas","Gotchas",[353,1514,1515,1534,1555,1594],{},[356,1516,1517,1519,1520,1523,1524,1527,1528,1530,1531,630],{},[345,1518,878],{}," rewrites vld's ",[345,1521,1522],{},"#\u002Fcomponents\u002Fschemas\u002FX"," refs to the generator's definitions path (",[345,1525,1526],{},"#\u002F$defs\u002FX"," by default, ",[345,1529,1522],{}," under ",[345,1532,1533],{},"SchemaSettings::openapi3()",[356,1535,1536,1537,1539,1540,1543,1544,1354,1547,1550,1551,1554],{},"With an OpenAPI 3.0 generator (",[345,1538,1533],{},") the output is converted by ",[345,1541,1542],{},"to_openapi3",": tuples become ",[345,1545,1546],{},"items: {anyOf: [...]}",[345,1548,1549],{},"null"," branches become ",[345,1552,1553],{},"nullable: true",", numeric exclusive bounds use the boolean 3.0 form.",[356,1556,1557,1558,1354,1561,1563,1564,1567,1568,1354,1571,1574,1575,1578,1579,1582,1583,1586,1587,1354,1590,1593],{},"The built-in validator (",[345,1559,1560],{},"validate_with_schema",[345,1562,1118],{},") covers types, required fields, length \u002F numeric \u002F array \u002F object constraints, ",[345,1565,1566],{},"enum",", composites, ",[345,1569,1570],{},"patternProperties",[345,1572,1573],{},"prefixItems"," and local ",[345,1576,1577],{},"$ref","s. It does ",[359,1580,1581],{},"not"," check vld's ",[345,1584,1585],{},"x-*"," keywords (",[345,1588,1589],{},"x-past",[345,1591,1592],{},"x-minUniqueItems",", …) and most formats beyond a basic shape check. Validate with the vld schema itself when those matter.",[356,1595,1596,1598],{},[345,1597,1118],{}," regenerates the schemars schema on every call. Cache the schema yourself on hot paths.",[341,1600,1601,1602,1604,1605,373],{},"See also ",[628,1603,206],{"href":207}," and ",[628,1606,1607],{"href":129},"JSON Schema",[1609,1610,1611],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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);}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":403,"searchDepth":424,"depth":476,"links":1613},[1614,1615,1616,1617,1618],{"id":394,"depth":424,"text":395},{"id":558,"depth":424,"text":559},{"id":633,"depth":424,"text":634},{"id":1297,"depth":424,"text":1298},{"id":1511,"depth":424,"text":1512},"Two-way bridge between vld and schemars - vld types as schemars::JsonSchema, and schemars types validated through vld.","md",[1622,1627],{"label":1623,"icon":1624,"to":1625,"target":1626},"crates.io","i-simple-icons-rust","https:\u002F\u002Fcrates.io\u002Fcrates\u002Fvld-schemars","_blank",{"label":1628,"icon":307,"to":1629,"target":1626},"docs.rs","https:\u002F\u002Fdocs.rs\u002Fvld-schemars",{},{"title":202,"description":1619},"oHQ6O6YRTe71HjN7hb_AFrx3csq2Ye1txUnSmkf5vl0",[1634,1636],{"title":198,"path":199,"stem":200,"description":1635,"children":-1},"Use vld schemas as utoipa ToSchema \u002F IntoParams types, so validation rules and OpenAPI docs come from one definition.",{"title":206,"path":207,"stem":208,"description":1637,"children":-1},"Use vld types in aide OpenAPI routers - a thin alias of vld-schemars with no aide dependency of its own.",1794036361954]