[{"data":1,"prerenderedAt":1292},["ShallowReactive",2],{"navigation":3,"\u002Fintegrations\u002Fui\u002Fleptos":335,"\u002Fintegrations\u002Fui\u002Fleptos-surround":1287},[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":284,"body":337,"description":1273,"extension":1274,"links":1275,"meta":1284,"navigation":467,"path":285,"seo":1285,"stem":286,"__hash__":1286},"docs\u002F6.integrations\u002F7.ui\u002F2.leptos.md",{"type":338,"value":339,"toc":1267},"minimark",[340,363,368,428,434,438,883,890,1150,1154,1228,1232,1263],[341,342,343,346,347,355,356,359,360,362],"p",{},[344,345,284],"code",{}," lets the same vld schemas check server-function arguments on the server and form fields in the browser. It has ",[348,349,350,351,354],"strong",{},"no ",[344,352,353],{},"leptos"," dependency"," (it works with any Leptos version) and builds for native and WASM targets. The API is the same as ",[357,358,280],"a",{"href":281},": both re-export the form helpers from ",[357,361,302],{"href":303},".",[364,365,367],"h2",{"id":366},"install","Install",[369,370,376],"pre",{"className":371,"code":372,"filename":373,"language":374,"meta":375,"style":375},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[dependencies]\nvld = \"0.5\"\nvld-leptos = \"0.5\"\n","Cargo.toml","toml","",[344,377,378,394,414],{"__ignoreMap":375},[379,380,383,387,391],"span",{"class":381,"line":382},"line",1,[379,384,386],{"class":385},"sMK4o","[",[379,388,390],{"class":389},"sBMFI","dependencies",[379,392,393],{"class":385},"]\n",[379,395,397,401,404,407,411],{"class":381,"line":396},2,[379,398,400],{"class":399},"sTEyZ","vld ",[379,402,403],{"class":385},"=",[379,405,406],{"class":385}," \"",[379,408,410],{"class":409},"sfazB","0.5",[379,412,413],{"class":385},"\"\n",[379,415,417,420,422,424,426],{"class":381,"line":416},3,[379,418,419],{"class":399},"vld-leptos ",[379,421,403],{"class":385},[379,423,406],{"class":385},[379,425,410],{"class":409},[379,427,413],{"class":385},[341,429,430,431,433],{},"No features. MSRV: 1.85 (see ",[357,432,23],{"href":24},").",[364,435,437],{"id":436},"example","Example",[369,439,443],{"className":440,"code":441,"language":442,"meta":375,"style":375},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use leptos::prelude::*;\n\nfn name_schema() -> vld::primitives::ZString { vld::string().min(2).max(50) }\nfn email_schema() -> vld::primitives::ZString { vld::string().email() }\n\n#[server]\nasync fn create_user(name: String, email: String) -> Result\u003C(), ServerFnError> {\n    vld_leptos::validate_args! {\n        name  => name_schema(),\n        email => email_schema(),\n    }\n    .map_err(|e| ServerFnError::new(e.to_string()))?;\n    Ok(())\n}\n\n#[component]\nfn CreateUserForm() -> impl IntoView {\n    let (name, set_name) = signal(String::new());\n    let name_error = Memo::new(move |_| vld_leptos::check_field(&name.get(), &name_schema()));\n    \u002F\u002F ... render the input and `name_error`\n}\n","rust",[344,444,445,463,469,535,574,579,590,642,655,669,681,687,724,733,739,744,754,774,811,871,878],{"__ignoreMap":375},[379,446,447,451,454,457,460],{"class":381,"line":382},[379,448,450],{"class":449},"sbssI","use",[379,452,453],{"class":389}," leptos",[379,455,456],{"class":385},"::",[379,458,459],{"class":389},"prelude",[379,461,462],{"class":385},"::*;\n",[379,464,465],{"class":381,"line":396},[379,466,468],{"emptyLinePlaceholder":467},true,"\n",[379,470,471,474,478,481,484,487,489,492,494,497,500,502,504,507,510,513,516,519,521,524,526,529,532],{"class":381,"line":416},[379,472,473],{"class":449},"fn",[379,475,477],{"class":476},"s2Zo4"," name_schema",[379,479,480],{"class":385},"()",[379,482,483],{"class":385}," ->",[379,485,486],{"class":389}," vld",[379,488,456],{"class":385},[379,490,491],{"class":389},"primitives",[379,493,456],{"class":385},[379,495,496],{"class":389},"ZString",[379,498,499],{"class":385}," {",[379,501,486],{"class":389},[379,503,456],{"class":385},[379,505,506],{"class":476},"string",[379,508,509],{"class":385},"().",[379,511,512],{"class":476},"min",[379,514,515],{"class":385},"(",[379,517,518],{"class":449},"2",[379,520,433],{"class":385},[379,522,523],{"class":476},"max",[379,525,515],{"class":385},[379,527,528],{"class":449},"50",[379,530,531],{"class":385},")",[379,533,534],{"class":385}," }\n",[379,536,538,540,543,545,547,549,551,553,555,557,559,561,563,565,567,570,572],{"class":381,"line":537},4,[379,539,473],{"class":449},[379,541,542],{"class":476}," email_schema",[379,544,480],{"class":385},[379,546,483],{"class":385},[379,548,486],{"class":389},[379,550,456],{"class":385},[379,552,491],{"class":389},[379,554,456],{"class":385},[379,556,496],{"class":389},[379,558,499],{"class":385},[379,560,486],{"class":389},[379,562,456],{"class":385},[379,564,506],{"class":476},[379,566,509],{"class":385},[379,568,569],{"class":476},"email",[379,571,480],{"class":385},[379,573,534],{"class":385},[379,575,577],{"class":381,"line":576},5,[379,578,468],{"emptyLinePlaceholder":467},[379,580,582,585,588],{"class":381,"line":581},6,[379,583,584],{"class":385},"#[",[379,586,587],{"class":399},"server",[379,589,393],{"class":385},[379,591,593,596,599,602,604,607,610,613,616,619,621,623,625,627,630,633,636,639],{"class":381,"line":592},7,[379,594,595],{"class":449},"async",[379,597,598],{"class":449}," fn",[379,600,601],{"class":476}," create_user",[379,603,515],{"class":385},[379,605,606],{"class":399},"name",[379,608,609],{"class":385},":",[379,611,612],{"class":389}," String",[379,614,615],{"class":385},",",[379,617,618],{"class":399}," email",[379,620,609],{"class":385},[379,622,612],{"class":389},[379,624,531],{"class":385},[379,626,483],{"class":385},[379,628,629],{"class":389}," Result",[379,631,632],{"class":385},"\u003C(),",[379,634,635],{"class":389}," ServerFnError",[379,637,638],{"class":385},">",[379,640,641],{"class":385}," {\n",[379,643,645,648,650,653],{"class":381,"line":644},8,[379,646,647],{"class":389},"    vld_leptos",[379,649,456],{"class":385},[379,651,652],{"class":476},"validate_args!",[379,654,641],{"class":385},[379,656,658,661,664,666],{"class":381,"line":657},9,[379,659,660],{"class":399},"        name  ",[379,662,663],{"class":385},"=>",[379,665,477],{"class":476},[379,667,668],{"class":385},"(),\n",[379,670,672,675,677,679],{"class":381,"line":671},10,[379,673,674],{"class":399},"        email ",[379,676,663],{"class":385},[379,678,542],{"class":476},[379,680,668],{"class":385},[379,682,684],{"class":381,"line":683},11,[379,685,686],{"class":385},"    }\n",[379,688,690,693,696,699,702,705,707,709,712,714,716,718,721],{"class":381,"line":689},12,[379,691,692],{"class":385},"    .",[379,694,695],{"class":476},"map_err",[379,697,698],{"class":385},"(|",[379,700,701],{"class":399},"e",[379,703,704],{"class":385},"|",[379,706,635],{"class":389},[379,708,456],{"class":385},[379,710,711],{"class":476},"new",[379,713,515],{"class":385},[379,715,701],{"class":399},[379,717,362],{"class":385},[379,719,720],{"class":476},"to_string",[379,722,723],{"class":385},"()))?;\n",[379,725,727,730],{"class":381,"line":726},13,[379,728,729],{"class":389},"    Ok",[379,731,732],{"class":385},"(())\n",[379,734,736],{"class":381,"line":735},14,[379,737,738],{"class":385},"}\n",[379,740,742],{"class":381,"line":741},15,[379,743,468],{"emptyLinePlaceholder":467},[379,745,747,749,752],{"class":381,"line":746},16,[379,748,584],{"class":385},[379,750,751],{"class":399},"component",[379,753,393],{"class":385},[379,755,757,759,762,764,766,769,772],{"class":381,"line":756},17,[379,758,473],{"class":449},[379,760,761],{"class":476}," CreateUserForm",[379,763,480],{"class":385},[379,765,483],{"class":385},[379,767,768],{"class":449}," impl",[379,770,771],{"class":389}," IntoView",[379,773,641],{"class":385},[379,775,777,781,784,786,788,791,793,796,799,801,804,806,808],{"class":381,"line":776},18,[379,778,780],{"class":779},"spNyl","    let",[379,782,783],{"class":385}," (",[379,785,606],{"class":399},[379,787,615],{"class":385},[379,789,790],{"class":399}," set_name",[379,792,531],{"class":385},[379,794,795],{"class":385}," =",[379,797,798],{"class":476}," signal",[379,800,515],{"class":385},[379,802,803],{"class":389},"String",[379,805,456],{"class":385},[379,807,711],{"class":476},[379,809,810],{"class":385},"());\n",[379,812,814,816,819,821,824,826,828,830,833,836,839,841,844,846,849,852,854,856,859,862,865,868],{"class":381,"line":813},19,[379,815,780],{"class":779},[379,817,818],{"class":399}," name_error ",[379,820,403],{"class":385},[379,822,823],{"class":389}," Memo",[379,825,456],{"class":385},[379,827,711],{"class":476},[379,829,515],{"class":385},[379,831,832],{"class":449},"move",[379,834,835],{"class":385}," |",[379,837,838],{"class":399},"_",[379,840,704],{"class":385},[379,842,843],{"class":389}," vld_leptos",[379,845,456],{"class":385},[379,847,848],{"class":476},"check_field",[379,850,851],{"class":385},"(&",[379,853,606],{"class":399},[379,855,362],{"class":385},[379,857,858],{"class":476},"get",[379,860,861],{"class":385},"(),",[379,863,864],{"class":385}," &",[379,866,867],{"class":476},"name_schema",[379,869,870],{"class":385},"()));\n",[379,872,874],{"class":381,"line":873},20,[379,875,877],{"class":876},"sHwdD","    \u002F\u002F ... render the input and `name_error`\n",[379,879,881],{"class":381,"line":880},21,[379,882,738],{"class":385},[341,884,885,886,889],{},"Whole-struct validation with a ",[344,887,888],{},"schema!"," type:",[369,891,893],{"className":440,"code":892,"language":442,"meta":375,"style":375},"vld::schema! {\n    struct CreateUserSchema {\n        name: String => vld::string().min(2).max(50),\n        email: String => vld::string().email(),\n    }\n}\n\n#[derive(serde::Serialize)]\nstruct CreateUserArgs { name: String, email: String }\n\nlet args = CreateUserArgs { name: \"X\".into(), email: \"bad\".into() };\nlet errors = vld_leptos::check_all_fields::\u003CCreateUserSchema, _>(&args);\nassert_eq!(errors.len(), 2);\n",[344,894,895,906,916,953,976,980,984,988,1008,1035,1039,1092,1128],{"__ignoreMap":375},[379,896,897,900,902,904],{"class":381,"line":382},[379,898,899],{"class":389},"vld",[379,901,456],{"class":385},[379,903,888],{"class":476},[379,905,641],{"class":385},[379,907,908,911,914],{"class":381,"line":396},[379,909,910],{"class":779},"    struct",[379,912,913],{"class":389}," CreateUserSchema",[379,915,641],{"class":385},[379,917,918,921,923,925,928,930,932,934,936,938,940,942,944,946,948,950],{"class":381,"line":416},[379,919,920],{"class":399},"        name",[379,922,609],{"class":385},[379,924,612],{"class":389},[379,926,927],{"class":385}," =>",[379,929,486],{"class":389},[379,931,456],{"class":385},[379,933,506],{"class":476},[379,935,509],{"class":385},[379,937,512],{"class":476},[379,939,515],{"class":385},[379,941,518],{"class":449},[379,943,433],{"class":385},[379,945,523],{"class":476},[379,947,515],{"class":385},[379,949,528],{"class":449},[379,951,952],{"class":385},"),\n",[379,954,955,958,960,962,964,966,968,970,972,974],{"class":381,"line":537},[379,956,957],{"class":399},"        email",[379,959,609],{"class":385},[379,961,612],{"class":389},[379,963,927],{"class":385},[379,965,486],{"class":389},[379,967,456],{"class":385},[379,969,506],{"class":476},[379,971,509],{"class":385},[379,973,569],{"class":476},[379,975,668],{"class":385},[379,977,978],{"class":381,"line":576},[379,979,686],{"class":385},[379,981,982],{"class":381,"line":581},[379,983,738],{"class":385},[379,985,986],{"class":381,"line":592},[379,987,468],{"emptyLinePlaceholder":467},[379,989,990,992,995,997,1000,1002,1005],{"class":381,"line":644},[379,991,584],{"class":385},[379,993,994],{"class":399},"derive",[379,996,515],{"class":385},[379,998,999],{"class":399},"serde",[379,1001,456],{"class":385},[379,1003,1004],{"class":389},"Serialize",[379,1006,1007],{"class":385},")]\n",[379,1009,1010,1013,1016,1018,1021,1023,1025,1027,1029,1031,1033],{"class":381,"line":657},[379,1011,1012],{"class":779},"struct",[379,1014,1015],{"class":389}," CreateUserArgs",[379,1017,499],{"class":385},[379,1019,1020],{"class":399}," name",[379,1022,609],{"class":385},[379,1024,612],{"class":389},[379,1026,615],{"class":385},[379,1028,618],{"class":399},[379,1030,609],{"class":385},[379,1032,612],{"class":389},[379,1034,534],{"class":385},[379,1036,1037],{"class":381,"line":671},[379,1038,468],{"emptyLinePlaceholder":467},[379,1040,1041,1044,1047,1049,1051,1053,1055,1057,1059,1062,1065,1067,1070,1072,1074,1076,1078,1081,1083,1085,1087,1089],{"class":381,"line":683},[379,1042,1043],{"class":779},"let",[379,1045,1046],{"class":399}," args ",[379,1048,403],{"class":385},[379,1050,1015],{"class":389},[379,1052,499],{"class":385},[379,1054,1020],{"class":399},[379,1056,609],{"class":385},[379,1058,406],{"class":385},[379,1060,1061],{"class":409},"X",[379,1063,1064],{"class":385},"\"",[379,1066,362],{"class":385},[379,1068,1069],{"class":476},"into",[379,1071,861],{"class":385},[379,1073,618],{"class":399},[379,1075,609],{"class":385},[379,1077,406],{"class":385},[379,1079,1080],{"class":409},"bad",[379,1082,1064],{"class":385},[379,1084,362],{"class":385},[379,1086,1069],{"class":476},[379,1088,480],{"class":385},[379,1090,1091],{"class":385}," };\n",[379,1093,1094,1096,1099,1101,1103,1105,1108,1111,1114,1116,1119,1122,1125],{"class":381,"line":689},[379,1095,1043],{"class":779},[379,1097,1098],{"class":399}," errors ",[379,1100,403],{"class":385},[379,1102,843],{"class":389},[379,1104,456],{"class":385},[379,1106,1107],{"class":476},"check_all_fields",[379,1109,1110],{"class":385},"::\u003C",[379,1112,1113],{"class":389},"CreateUserSchema",[379,1115,615],{"class":385},[379,1117,1118],{"class":399}," _",[379,1120,1121],{"class":385},">(&",[379,1123,1124],{"class":399},"args",[379,1126,1127],{"class":385},");\n",[379,1129,1130,1133,1135,1138,1140,1143,1145,1148],{"class":381,"line":726},[379,1131,1132],{"class":476},"assert_eq!",[379,1134,515],{"class":385},[379,1136,1137],{"class":399},"errors",[379,1139,362],{"class":385},[379,1141,1142],{"class":476},"len",[379,1144,861],{"class":385},[379,1146,1147],{"class":449}," 2",[379,1149,1127],{"class":385},[364,1151,1153],{"id":1152},"api","API",[1155,1156,1157,1167,1177,1186,1196,1220],"ul",{},[1158,1159,1160,1163,1164,362],"li",{},[344,1161,1162],{},"validate_args! { arg => schema, ... }"," — validate local values; ",[344,1165,1166],{},"Result\u003C(), VldServerError>",[1158,1168,1169,1172,1173,1176],{},[344,1170,1171],{},"validate::\u003CS, T>(&value)"," \u002F ",[344,1174,1175],{},"validate_value::\u003CS>(&json)"," — validate against a schema type.",[1158,1178,1179,1172,1182,1185],{},[344,1180,1181],{},"check_field(&value, &schema)",[344,1183,1184],{},"check_field_all(&value, &schema)"," — single-field checks for reactive UI.",[1158,1187,1188,1191,1192,1195],{},[344,1189,1190],{},"check_all_fields::\u003CS, T>(&value)"," — ",[344,1193,1194],{},"Vec\u003CFieldError>"," for a whole form.",[1158,1197,1198,1191,1201,1204,1205,1204,1208,1204,1211,1204,1214,1204,1217,362],{},[344,1199,1200],{},"VldServerError { message, fields }",[344,1202,1203],{},"field_error",", ",[344,1206,1207],{},"field_errors",[344,1209,1210],{},"has_field_error",[344,1212,1213],{},"error_fields",[344,1215,1216],{},"from_json",[344,1218,1219],{},"from_server_message",[1158,1221,1222,1225,1226,362],{},[344,1223,1224],{},"FieldError { field, message }","; ",[344,1227,459],{},[364,1229,1231],{"id":1230},"gotchas","Gotchas",[1155,1233,1234,1245],{},[1158,1235,1236,1237,1204,1239,1204,1242,362],{},"Field paths have no leading dot: ",[344,1238,606],{},[344,1240,1241],{},"user.email",[344,1243,1244],{},"items[0]",[1158,1246,1247,1248,1251,1252,1254,1255,1258,1259,1262],{},"Parse errors coming back from a server function with ",[344,1249,1250],{},"VldServerError::from_server_message(&e.to_string())",", not ",[344,1253,1216],{}," (the ",[344,1256,1257],{},"Display"," of ",[344,1260,1261],{},"ServerFnError"," adds a prefix).",[1264,1265,1266],"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 .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}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}",{"title":375,"searchDepth":396,"depth":416,"links":1268},[1269,1270,1271,1272],{"id":366,"depth":396,"text":367},{"id":436,"depth":396,"text":437},{"id":1152,"depth":396,"text":1153},{"id":1230,"depth":396,"text":1231},"Shared validation for Leptos server functions and WASM clients, without a leptos dependency.","md",[1276,1281],{"label":1277,"icon":1278,"to":1279,"target":1280},"crates.io","i-simple-icons-rust","https:\u002F\u002Fcrates.io\u002Fcrates\u002Fvld-leptos","_blank",{"label":1282,"icon":307,"to":1283,"target":1280},"docs.rs","https:\u002F\u002Fdocs.rs\u002Fvld-leptos",{},{"title":284,"description":1273},"pSeYwuBSTOi0f1I1KZD4XDZg64PZYDyq6YNu-MivX3I",[1288,1290],{"title":280,"path":281,"stem":282,"description":1289,"children":-1},"Shared validation for Dioxus server functions and WASM clients, without a dioxus dependency.",{"title":288,"path":289,"stem":290,"description":1291,"children":-1},"Validate Tauri command arguments, events, state and channel messages, without a tauri dependency.",1794036363140]