[{"data":1,"prerenderedAt":1503},["ShallowReactive",2],{"navigation":3,"\u002Fintegrations\u002Fopenapi\u002Faide":335,"\u002Fintegrations\u002Fopenapi\u002Faide-surround":1498},[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":206,"body":337,"description":1484,"extension":1485,"links":1486,"meta":1495,"navigation":645,"path":207,"seo":1496,"stem":208,"__hash__":1497},"docs\u002F6.integrations\u002F2.openapi\u002F3.aide.md",{"type":338,"value":339,"toc":1477},"minimark",[340,381,386,522,526,582,589,594,598,875,893,1350,1366,1370,1433,1442,1446,1473],[341,342,343,350,351,355,356,358,359,362,363,366,367,370,371,373,374,377,378,380],"p",{},[344,345,349],"a",{"href":346,"rel":347},"https:\u002F\u002Fdocs.rs\u002Faide",[348],"nofollow","aide"," builds OpenAPI documents from ",[352,353,354],"code",{},"schemars::JsonSchema",". ",[352,357,206],{}," re-exports ",[352,360,361],{},"impl_json_schema!",", ",[352,364,365],{},"vld_to_schemars"," and ",[352,368,369],{},"schemars"," from ",[344,372,202],{"href":203},", so a vld type can be used in ",[352,375,376],{},"aide::axum::Json\u003CT>"," and friends. It does not depend on ",[352,379,349],{},": add the aide version you use yourself.",[382,383,385],"h2",{"id":384},"install","Install",[387,388,394],"pre",{"className":389,"code":390,"filename":391,"language":392,"meta":393,"style":393},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[dependencies]\nvld = { version = \"0.5\", features = [\"openapi\"] }\nvld-aide = \"0.5\"   # schemars 0.9-0.x (default)\naide = { version = \"0.15\", features = [\"axum\"] }\n","Cargo.toml","toml","",[352,395,396,412,464,482],{"__ignoreMap":393},[397,398,401,405,409],"span",{"class":399,"line":400},"line",1,[397,402,404],{"class":403},"sMK4o","[",[397,406,408],{"class":407},"sBMFI","dependencies",[397,410,411],{"class":403},"]\n",[397,413,415,419,422,425,428,430,433,437,440,443,446,448,451,453,456,458,461],{"class":399,"line":414},2,[397,416,418],{"class":417},"sTEyZ","vld ",[397,420,421],{"class":403},"=",[397,423,424],{"class":403}," {",[397,426,427],{"class":417}," version ",[397,429,421],{"class":403},[397,431,432],{"class":403}," \"",[397,434,436],{"class":435},"sfazB","0.5",[397,438,439],{"class":403},"\"",[397,441,442],{"class":403},",",[397,444,445],{"class":417}," features ",[397,447,421],{"class":403},[397,449,450],{"class":403}," [",[397,452,439],{"class":403},[397,454,455],{"class":435},"openapi",[397,457,439],{"class":403},[397,459,460],{"class":403},"]",[397,462,463],{"class":403}," }\n",[397,465,467,470,472,474,476,478],{"class":399,"line":466},3,[397,468,469],{"class":417},"vld-aide ",[397,471,421],{"class":403},[397,473,432],{"class":403},[397,475,436],{"class":435},[397,477,439],{"class":403},[397,479,481],{"class":480},"sHwdD","   # schemars 0.9-0.x (default)\n",[397,483,485,488,490,492,494,496,498,501,503,505,507,509,511,513,516,518,520],{"class":399,"line":484},4,[397,486,487],{"class":417},"aide ",[397,489,421],{"class":403},[397,491,424],{"class":403},[397,493,427],{"class":417},[397,495,421],{"class":403},[397,497,432],{"class":403},[397,499,500],{"class":435},"0.15",[397,502,439],{"class":403},[397,504,442],{"class":403},[397,506,445],{"class":417},[397,508,421],{"class":403},[397,510,450],{"class":403},[397,512,439],{"class":403},[397,514,515],{"class":435},"axum",[397,517,439],{"class":403},[397,519,460],{"class":403},[397,521,463],{"class":403},[382,523,525],{"id":524},"features","Features",[527,528,529,545],"table",{},[530,531,532],"thead",{},[533,534,535,539,542],"tr",{},[536,537,538],"th",{},"Feature",[536,540,541],{},"Default",[536,543,544],{},"Description",[546,547,548,566],"tbody",{},[533,549,550,556,559],{},[551,552,553],"td",{},[352,554,555],{},"schemars-0",[551,557,558],{},"yes",[551,560,561,562,565],{},"schemars ",[352,563,564],{},">=0.9, \u003C1"," (aide 0.15)",[533,567,568,573,576],{},[551,569,570],{},[352,571,572],{},"schemars-1",[551,574,575],{},"no",[551,577,561,578,581],{},[352,579,580],{},">=1, \u003C2"," (aide releases built on schemars 1)",[341,583,584,585,588],{},"Enable exactly one, matching the schemars major your aide version uses (",[352,586,587],{},"cargo tree -i schemars",").",[341,590,591,592,588],{},"MSRV: 1.85 (see ",[344,593,23],{"href":24},[382,595,597],{"id":596},"example","Example",[387,599,603],{"className":600,"code":601,"language":602,"meta":393,"style":393},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use vld_aide::prelude::*;\nuse vld_aide::schemars::JsonSchema;\n\nvld::schema! {\n    #[derive(Debug)]\n    pub struct CreateUser {\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(13).max(150),\n    }\n}\nimpl_json_schema!(CreateUser);\n\nassert_eq!(CreateUser::schema_name(), \"CreateUser\");\n","rust",[352,604,605,623,641,647,661,679,694,744,772,819,825,831,844,849],{"__ignoreMap":393},[397,606,607,611,614,617,620],{"class":399,"line":400},[397,608,610],{"class":609},"sbssI","use",[397,612,613],{"class":407}," vld_aide",[397,615,616],{"class":403},"::",[397,618,619],{"class":407},"prelude",[397,621,622],{"class":403},"::*;\n",[397,624,625,627,629,631,633,635,638],{"class":399,"line":414},[397,626,610],{"class":609},[397,628,613],{"class":407},[397,630,616],{"class":403},[397,632,369],{"class":407},[397,634,616],{"class":403},[397,636,637],{"class":407},"JsonSchema",[397,639,640],{"class":403},";\n",[397,642,643],{"class":399,"line":466},[397,644,646],{"emptyLinePlaceholder":645},true,"\n",[397,648,649,652,654,658],{"class":399,"line":484},[397,650,651],{"class":407},"vld",[397,653,616],{"class":403},[397,655,657],{"class":656},"s2Zo4","schema!",[397,659,660],{"class":403}," {\n",[397,662,664,667,670,673,676],{"class":399,"line":663},5,[397,665,666],{"class":403},"    #[",[397,668,669],{"class":417},"derive",[397,671,672],{"class":403},"(",[397,674,675],{"class":407},"Debug",[397,677,678],{"class":403},")]\n",[397,680,682,686,689,692],{"class":399,"line":681},6,[397,683,685],{"class":684},"spNyl","    pub",[397,687,688],{"class":684}," struct",[397,690,691],{"class":407}," CreateUser",[397,693,660],{"class":403},[397,695,697,700,703,706,709,712,715,717,720,723,726,728,731,733,736,738,741],{"class":399,"line":696},7,[397,698,699],{"class":684},"        pub",[397,701,702],{"class":417}," name",[397,704,705],{"class":403},":",[397,707,708],{"class":407}," String",[397,710,711],{"class":403}," =>",[397,713,714],{"class":407}," vld",[397,716,616],{"class":403},[397,718,719],{"class":656},"string",[397,721,722],{"class":403},"().",[397,724,725],{"class":656},"min",[397,727,672],{"class":403},[397,729,730],{"class":609},"2",[397,732,588],{"class":403},[397,734,735],{"class":656},"max",[397,737,672],{"class":403},[397,739,740],{"class":609},"100",[397,742,743],{"class":403},"),\n",[397,745,747,749,752,754,756,758,760,762,764,766,769],{"class":399,"line":746},8,[397,748,699],{"class":684},[397,750,751],{"class":417}," email",[397,753,705],{"class":403},[397,755,708],{"class":407},[397,757,711],{"class":403},[397,759,714],{"class":407},[397,761,616],{"class":403},[397,763,719],{"class":656},[397,765,722],{"class":403},[397,767,768],{"class":656},"email",[397,770,771],{"class":403},"(),\n",[397,773,775,777,780,782,785,787,789,791,794,796,799,801,803,805,808,810,812,814,817],{"class":399,"line":774},9,[397,776,699],{"class":684},[397,778,779],{"class":417}," age",[397,781,705],{"class":403},[397,783,784],{"class":407}," i64",[397,786,711],{"class":403},[397,788,714],{"class":407},[397,790,616],{"class":403},[397,792,793],{"class":656},"number",[397,795,722],{"class":403},[397,797,798],{"class":656},"int",[397,800,722],{"class":403},[397,802,725],{"class":656},[397,804,672],{"class":403},[397,806,807],{"class":609},"13",[397,809,588],{"class":403},[397,811,735],{"class":656},[397,813,672],{"class":403},[397,815,816],{"class":609},"150",[397,818,743],{"class":403},[397,820,822],{"class":399,"line":821},10,[397,823,824],{"class":403},"    }\n",[397,826,828],{"class":399,"line":827},11,[397,829,830],{"class":403},"}\n",[397,832,834,836,838,841],{"class":399,"line":833},12,[397,835,361],{"class":656},[397,837,672],{"class":403},[397,839,840],{"class":407},"CreateUser",[397,842,843],{"class":403},");\n",[397,845,847],{"class":399,"line":846},13,[397,848,646],{"emptyLinePlaceholder":645},[397,850,852,855,857,859,861,864,867,869,871,873],{"class":399,"line":851},14,[397,853,854],{"class":656},"assert_eq!",[397,856,672],{"class":403},[397,858,840],{"class":407},[397,860,616],{"class":403},[397,862,863],{"class":656},"schema_name",[397,865,866],{"class":403},"(),",[397,868,432],{"class":403},[397,870,840],{"class":435},[397,872,439],{"class":403},[397,874,843],{"class":403},[341,876,877,878,881,882,884,885,887,888,890,891,705],{},"With aide and axum, the body type must also implement ",[352,879,880],{},"serde::Deserialize",", so use ",[352,883,84],{}," (feature ",[352,886,669],{}," on ",[352,889,651],{},") instead of ",[352,892,657],{},[387,894,896],{"className":600,"code":895,"language":602,"meta":393,"style":393},"use aide::axum::{routing::post_with, ApiRouter};\nuse aide::axum::Json;\nuse aide::transform::TransformOperation;\n\n#[derive(Debug, serde::Serialize, serde::Deserialize, vld::Validate)]\nstruct NewUser {\n    #[vld(vld::string().min(2).max(100))]\n    name: String,\n    #[vld(vld::string().email())]\n    email: String,\n}\nvld_aide::impl_json_schema!(NewUser);\n\nasync fn create_user(Json(body): Json\u003CNewUser>) -> Json\u003Cserde_json::Value> {\n    Json(serde_json::json!({\"id\": 1, \"name\": body.name}))\n}\n\nfn create_user_docs(op: TransformOperation) -> TransformOperation {\n    op.summary(\"Create a user\")\n}\n\nlet app: ApiRouter = ApiRouter::new().api_route(\"\u002Fusers\", post_with(create_user, create_user_docs));\n",[352,897,898,928,945,963,967,1008,1018,1051,1063,1084,1095,1099,1115,1119,1173,1225,1230,1235,1263,1286,1291,1296],{"__ignoreMap":393},[397,899,900,902,905,907,909,912,915,917,920,922,925],{"class":399,"line":400},[397,901,610],{"class":609},[397,903,904],{"class":407}," aide",[397,906,616],{"class":403},[397,908,515],{"class":407},[397,910,911],{"class":403},"::{",[397,913,914],{"class":407},"routing",[397,916,616],{"class":403},[397,918,919],{"class":407},"post_with",[397,921,442],{"class":403},[397,923,924],{"class":407}," ApiRouter",[397,926,927],{"class":403},"};\n",[397,929,930,932,934,936,938,940,943],{"class":399,"line":414},[397,931,610],{"class":609},[397,933,904],{"class":407},[397,935,616],{"class":403},[397,937,515],{"class":407},[397,939,616],{"class":403},[397,941,942],{"class":407},"Json",[397,944,640],{"class":403},[397,946,947,949,951,953,956,958,961],{"class":399,"line":466},[397,948,610],{"class":609},[397,950,904],{"class":407},[397,952,616],{"class":403},[397,954,955],{"class":407},"transform",[397,957,616],{"class":403},[397,959,960],{"class":407},"TransformOperation",[397,962,640],{"class":403},[397,964,965],{"class":399,"line":484},[397,966,646],{"emptyLinePlaceholder":645},[397,968,969,972,974,976,978,980,983,985,988,990,992,994,997,999,1001,1003,1006],{"class":399,"line":663},[397,970,971],{"class":403},"#[",[397,973,669],{"class":417},[397,975,672],{"class":403},[397,977,675],{"class":407},[397,979,442],{"class":403},[397,981,982],{"class":417}," serde",[397,984,616],{"class":403},[397,986,987],{"class":407},"Serialize",[397,989,442],{"class":403},[397,991,982],{"class":417},[397,993,616],{"class":403},[397,995,996],{"class":407},"Deserialize",[397,998,442],{"class":403},[397,1000,714],{"class":417},[397,1002,616],{"class":403},[397,1004,1005],{"class":407},"Validate",[397,1007,678],{"class":403},[397,1009,1010,1013,1016],{"class":399,"line":681},[397,1011,1012],{"class":684},"struct",[397,1014,1015],{"class":407}," NewUser",[397,1017,660],{"class":403},[397,1019,1020,1022,1024,1026,1028,1030,1032,1034,1036,1038,1040,1042,1044,1046,1048],{"class":399,"line":696},[397,1021,666],{"class":403},[397,1023,651],{"class":417},[397,1025,672],{"class":403},[397,1027,651],{"class":417},[397,1029,616],{"class":403},[397,1031,719],{"class":417},[397,1033,722],{"class":403},[397,1035,725],{"class":417},[397,1037,672],{"class":403},[397,1039,730],{"class":417},[397,1041,588],{"class":403},[397,1043,735],{"class":417},[397,1045,672],{"class":403},[397,1047,740],{"class":417},[397,1049,1050],{"class":403},"))]\n",[397,1052,1053,1056,1058,1060],{"class":399,"line":746},[397,1054,1055],{"class":417},"    name",[397,1057,705],{"class":403},[397,1059,708],{"class":407},[397,1061,1062],{"class":403},",\n",[397,1064,1065,1067,1069,1071,1073,1075,1077,1079,1081],{"class":399,"line":774},[397,1066,666],{"class":403},[397,1068,651],{"class":417},[397,1070,672],{"class":403},[397,1072,651],{"class":417},[397,1074,616],{"class":403},[397,1076,719],{"class":417},[397,1078,722],{"class":403},[397,1080,768],{"class":417},[397,1082,1083],{"class":403},"())]\n",[397,1085,1086,1089,1091,1093],{"class":399,"line":821},[397,1087,1088],{"class":417},"    email",[397,1090,705],{"class":403},[397,1092,708],{"class":407},[397,1094,1062],{"class":403},[397,1096,1097],{"class":399,"line":827},[397,1098,830],{"class":403},[397,1100,1101,1104,1106,1108,1110,1113],{"class":399,"line":833},[397,1102,1103],{"class":407},"vld_aide",[397,1105,616],{"class":403},[397,1107,361],{"class":656},[397,1109,672],{"class":403},[397,1111,1112],{"class":407},"NewUser",[397,1114,843],{"class":403},[397,1116,1117],{"class":399,"line":846},[397,1118,646],{"emptyLinePlaceholder":645},[397,1120,1121,1124,1127,1130,1132,1134,1136,1139,1142,1145,1148,1150,1153,1156,1158,1160,1163,1165,1168,1171],{"class":399,"line":851},[397,1122,1123],{"class":609},"async",[397,1125,1126],{"class":609}," fn",[397,1128,1129],{"class":656}," create_user",[397,1131,672],{"class":403},[397,1133,942],{"class":656},[397,1135,672],{"class":403},[397,1137,1138],{"class":417},"body",[397,1140,1141],{"class":403},"):",[397,1143,1144],{"class":407}," Json",[397,1146,1147],{"class":403},"\u003C",[397,1149,1112],{"class":407},[397,1151,1152],{"class":403},">)",[397,1154,1155],{"class":403}," ->",[397,1157,1144],{"class":407},[397,1159,1147],{"class":403},[397,1161,1162],{"class":417},"serde_json",[397,1164,616],{"class":403},[397,1166,1167],{"class":407},"Value",[397,1169,1170],{"class":403},">",[397,1172,660],{"class":403},[397,1174,1176,1179,1181,1183,1185,1188,1191,1193,1196,1198,1200,1203,1205,1207,1210,1212,1214,1217,1220,1222],{"class":399,"line":1175},15,[397,1177,1178],{"class":656},"    Json",[397,1180,672],{"class":403},[397,1182,1162],{"class":407},[397,1184,616],{"class":403},[397,1186,1187],{"class":656},"json!",[397,1189,1190],{"class":403},"({",[397,1192,439],{"class":403},[397,1194,1195],{"class":435},"id",[397,1197,439],{"class":403},[397,1199,705],{"class":403},[397,1201,1202],{"class":609}," 1",[397,1204,442],{"class":403},[397,1206,432],{"class":403},[397,1208,1209],{"class":435},"name",[397,1211,439],{"class":403},[397,1213,705],{"class":403},[397,1215,1216],{"class":417}," body",[397,1218,1219],{"class":403},".",[397,1221,1209],{"class":417},[397,1223,1224],{"class":403},"}))\n",[397,1226,1228],{"class":399,"line":1227},16,[397,1229,830],{"class":403},[397,1231,1233],{"class":399,"line":1232},17,[397,1234,646],{"emptyLinePlaceholder":645},[397,1236,1238,1241,1244,1246,1249,1251,1254,1257,1259,1261],{"class":399,"line":1237},18,[397,1239,1240],{"class":609},"fn",[397,1242,1243],{"class":656}," create_user_docs",[397,1245,672],{"class":403},[397,1247,1248],{"class":417},"op",[397,1250,705],{"class":403},[397,1252,1253],{"class":407}," TransformOperation",[397,1255,1256],{"class":403},")",[397,1258,1155],{"class":403},[397,1260,1253],{"class":407},[397,1262,660],{"class":403},[397,1264,1266,1269,1271,1274,1276,1278,1281,1283],{"class":399,"line":1265},19,[397,1267,1268],{"class":417},"    op",[397,1270,1219],{"class":403},[397,1272,1273],{"class":656},"summary",[397,1275,672],{"class":403},[397,1277,439],{"class":403},[397,1279,1280],{"class":435},"Create a user",[397,1282,439],{"class":403},[397,1284,1285],{"class":403},")\n",[397,1287,1289],{"class":399,"line":1288},20,[397,1290,830],{"class":403},[397,1292,1294],{"class":399,"line":1293},21,[397,1295,646],{"emptyLinePlaceholder":645},[397,1297,1299,1302,1305,1307,1309,1312,1314,1316,1319,1321,1324,1326,1328,1331,1333,1335,1338,1340,1343,1345,1347],{"class":399,"line":1298},22,[397,1300,1301],{"class":684},"let",[397,1303,1304],{"class":417}," app",[397,1306,705],{"class":403},[397,1308,924],{"class":407},[397,1310,1311],{"class":403}," =",[397,1313,924],{"class":407},[397,1315,616],{"class":403},[397,1317,1318],{"class":656},"new",[397,1320,722],{"class":403},[397,1322,1323],{"class":656},"api_route",[397,1325,672],{"class":403},[397,1327,439],{"class":403},[397,1329,1330],{"class":435},"\u002Fusers",[397,1332,439],{"class":403},[397,1334,442],{"class":403},[397,1336,1337],{"class":656}," post_with",[397,1339,672],{"class":403},[397,1341,1342],{"class":417},"create_user",[397,1344,442],{"class":403},[397,1346,1243],{"class":417},[397,1348,1349],{"class":403},"));\n",[341,1351,1352,1354,1355,1358,1359,1362,1363,1365],{},[352,1353,376],{}," deserializes with serde and does not run vld rules. Validate in the handler (",[352,1356,1357],{},"NewUser::validate(&body)",", see ",[344,1360,1361],{"href":89},"parse vs validate",") or use ",[344,1364,152],{"href":153}," extractors for the request and keep aide for the documentation.",[382,1367,1369],{"id":1368},"api","API",[527,1371,1372,1381],{},[530,1373,1374],{},[533,1375,1376,1379],{},[536,1377,1378],{},"Item",[536,1380,544],{},[546,1382,1383,1399,1412,1421],{},[533,1384,1385,1394],{},[551,1386,1387,1390,1391],{},[352,1388,1389],{},"impl_json_schema!(T)"," \u002F ",[352,1392,1393],{},"impl_json_schema!(T, \"Name\")",[551,1395,1396,1398],{},[352,1397,354],{}," for a vld type",[533,1400,1401,1406],{},[551,1402,1403],{},[352,1404,1405],{},"vld_to_schemars(&Value)",[551,1407,1408,1409],{},"JSON Schema value → ",[352,1410,1411],{},"schemars::Schema",[533,1413,1414,1418],{},[551,1415,1416],{},[352,1417,369],{},[551,1419,1420],{},"Re-export of the selected schemars major",[533,1422,1423,1427],{},[551,1424,1425],{},[352,1426,619],{},[551,1428,1429,1430],{},"The two items above plus ",[352,1431,1432],{},"vld::prelude::*",[341,1434,1435,1436,1439,1440,1219],{},"Everything else (validator, introspection, ",[352,1437,1438],{},"to_openapi3",") lives in ",[344,1441,202],{"href":203},[382,1443,1445],{"id":1444},"gotchas","Gotchas",[1447,1448,1449,1464],"ul",{},[1450,1451,1452,1453,1456,1457,1460,1461,1219],"li",{},"Nested ",[352,1454,1455],{},"vld::nested!"," types are added to the generator's definitions, and their ",[352,1458,1459],{},"$ref","s point at aide's ",[352,1462,1463],{},"#\u002Fcomponents\u002Fschemas\u002F",[1450,1465,1466,1467,1470,1471,1219],{},"Query and path structs get an object schema; there is no per-parameter ",[352,1468,1469],{},"IntoParams"," like in ",[344,1472,198],{"href":199},[1474,1475,1476],"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 .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":393,"searchDepth":414,"depth":466,"links":1478},[1479,1480,1481,1482,1483],{"id":384,"depth":414,"text":385},{"id":524,"depth":414,"text":525},{"id":596,"depth":414,"text":597},{"id":1368,"depth":414,"text":1369},{"id":1444,"depth":414,"text":1445},"Use vld types in aide OpenAPI routers - a thin alias of vld-schemars with no aide dependency of its own.","md",[1487,1492],{"label":1488,"icon":1489,"to":1490,"target":1491},"crates.io","i-simple-icons-rust","https:\u002F\u002Fcrates.io\u002Fcrates\u002Fvld-aide","_blank",{"label":1493,"icon":307,"to":1494,"target":1491},"docs.rs","https:\u002F\u002Fdocs.rs\u002Fvld-aide",{},{"title":206,"description":1484},"ztVu1KeMnlmpCgeByqhhtUnwH6l7UO8zvoq7xqNlvlU",[1499,1501],{"title":202,"path":203,"stem":204,"description":1500,"children":-1},"Two-way bridge between vld and schemars - vld types as schemars::JsonSchema, and schemars types validated through vld.",{"title":216,"path":217,"stem":218,"description":1502,"children":-1},"Generate TypeScript Zod or Valibot schemas from vld schemas, so the frontend validates exactly what the server does.",1794036362022]