[{"data":1,"prerenderedAt":1761},["ShallowReactive",2],{"navigation":3,"\u002Fintegrations\u002Fweb\u002Factix":335,"\u002Fintegrations\u002Fweb\u002Factix-surround":1756},[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":156,"body":337,"description":1742,"extension":1743,"links":1744,"meta":1753,"navigation":535,"path":157,"seo":1754,"stem":158,"__hash__":1755},"docs\u002F6.integrations\u002F1.web\u002F03.actix.md",{"type":338,"value":339,"toc":1736},"minimark",[340,365,370,445,456,460,1455,1465,1469,1627,1653,1657,1732],[341,342,343,344,348,349,348,352,355,356,359,360,364],"p",{},"Drop-in replacements for ",[345,346,347],"code",{},"web::Json",", ",[345,350,351],{},"web::Query",[345,353,354],{},"web::Path"," and ",[345,357,358],{},"web::Form",", plus header and cookie extractors. Shared behaviour (status codes, error body, coercion, header\u002Fcookie rules) is in the ",[361,362,363],"a",{"href":149},"web adapters overview",".",[366,367,369],"h2",{"id":368},"install","Install",[371,372,378],"pre",{"className":373,"code":374,"filename":375,"language":376,"meta":377,"style":377},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[dependencies]\nvld = \"0.5\"\nvld-actix = \"0.5\"\nactix-web = \"4\"\n","Cargo.toml","toml","",[345,379,380,396,416,430],{"__ignoreMap":377},[381,382,385,389,393],"span",{"class":383,"line":384},"line",1,[381,386,388],{"class":387},"sMK4o","[",[381,390,392],{"class":391},"sBMFI","dependencies",[381,394,395],{"class":387},"]\n",[381,397,399,403,406,409,413],{"class":383,"line":398},2,[381,400,402],{"class":401},"sTEyZ","vld ",[381,404,405],{"class":387},"=",[381,407,408],{"class":387}," \"",[381,410,412],{"class":411},"sfazB","0.5",[381,414,415],{"class":387},"\"\n",[381,417,419,422,424,426,428],{"class":383,"line":418},3,[381,420,421],{"class":401},"vld-actix ",[381,423,405],{"class":387},[381,425,408],{"class":387},[381,427,412],{"class":411},[381,429,415],{"class":387},[381,431,433,436,438,440,443],{"class":383,"line":432},4,[381,434,435],{"class":401},"actix-web ",[381,437,405],{"class":387},[381,439,408],{"class":387},[381,441,442],{"class":411},"4",[381,444,415],{"class":387},[341,446,447,448,452,453,455],{},"No features. Works with actix-web ",[449,450,451],"strong",{},"4.4+",". MSRV 1.85 (see ",[361,454,23],{"href":24},").",[366,457,459],{"id":458},"example","Example",[371,461,466],{"className":462,"code":463,"filename":464,"language":465,"meta":377,"style":377},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use actix_web::{web, App, HttpResponse, HttpServer};\nuse vld_actix::{VldBodyLimit, VldJson, VldPath, VldQuery};\n\nvld::schema! {\n    #[derive(Debug)]\n    pub struct CreateUser {\n        pub name: String => vld::string().min(2).max(50),\n        pub email: String => vld::string().email(),\n    }\n}\n\nvld::schema! {\n    #[derive(Debug)]\n    pub struct UserPath {\n        pub id: i64 => vld::number().int().min(1),\n    }\n}\n\nvld::schema! {\n    #[derive(Debug)]\n    pub struct Search {\n        pub q: String => vld::string().min(1),\n        pub page: Option\u003Ci64> => vld::number().int().min(1).optional(),\n    }\n}\n\nasync fn create_user(user: VldJson\u003CCreateUser>) -> HttpResponse {\n    HttpResponse::Created().body(format!(\"created {}\", user.name))\n}\n\nasync fn get_user(path: VldPath\u003CUserPath>) -> HttpResponse {\n    HttpResponse::Ok().body(format!(\"user #{}\", path.id))\n}\n\nasync fn search(q: VldQuery\u003CSearch>) -> HttpResponse {\n    HttpResponse::Ok().body(format!(\"{} (page {})\", q.q, q.page.unwrap_or(1)))\n}\n\n#[actix_web::main]\nasync fn main() -> std::io::Result\u003C()> {\n    HttpServer::new(|| {\n        App::new()\n            .app_data(VldBodyLimit(8 * 1024 * 1024)) \u002F\u002F optional, default 2 MiB\n            .route(\"\u002Fusers\", web::post().to(create_user))\n            .route(\"\u002Fusers\u002F{id}\", web::get().to(get_user))\n            .route(\"\u002Fsearch\", web::get().to(search))\n    })\n    .bind(\"127.0.0.1:8080\")?\n    .run()\n    .await\n}\n","main.rs","rust",[345,467,468,502,531,537,552,570,585,635,663,669,675,680,691,704,716,754,759,764,769,780,793,805,835,884,889,894,899,935,980,985,990,1022,1061,1066,1071,1103,1165,1170,1175,1191,1224,1240,1253,1288,1327,1369,1404,1410,1431,1441,1450],{"__ignoreMap":377},[381,469,470,474,477,480,483,486,489,491,494,496,499],{"class":383,"line":384},[381,471,473],{"class":472},"sbssI","use",[381,475,476],{"class":391}," actix_web",[381,478,479],{"class":387},"::{",[381,481,482],{"class":391},"web",[381,484,485],{"class":387},",",[381,487,488],{"class":391}," App",[381,490,485],{"class":387},[381,492,493],{"class":391}," HttpResponse",[381,495,485],{"class":387},[381,497,498],{"class":391}," HttpServer",[381,500,501],{"class":387},"};\n",[381,503,504,506,509,511,514,516,519,521,524,526,529],{"class":383,"line":398},[381,505,473],{"class":472},[381,507,508],{"class":391}," vld_actix",[381,510,479],{"class":387},[381,512,513],{"class":391},"VldBodyLimit",[381,515,485],{"class":387},[381,517,518],{"class":391}," VldJson",[381,520,485],{"class":387},[381,522,523],{"class":391}," VldPath",[381,525,485],{"class":387},[381,527,528],{"class":391}," VldQuery",[381,530,501],{"class":387},[381,532,533],{"class":383,"line":418},[381,534,536],{"emptyLinePlaceholder":535},true,"\n",[381,538,539,542,545,549],{"class":383,"line":432},[381,540,541],{"class":391},"vld",[381,543,544],{"class":387},"::",[381,546,548],{"class":547},"s2Zo4","schema!",[381,550,551],{"class":387}," {\n",[381,553,555,558,561,564,567],{"class":383,"line":554},5,[381,556,557],{"class":387},"    #[",[381,559,560],{"class":401},"derive",[381,562,563],{"class":387},"(",[381,565,566],{"class":391},"Debug",[381,568,569],{"class":387},")]\n",[381,571,573,577,580,583],{"class":383,"line":572},6,[381,574,576],{"class":575},"spNyl","    pub",[381,578,579],{"class":575}," struct",[381,581,582],{"class":391}," CreateUser",[381,584,551],{"class":387},[381,586,588,591,594,597,600,603,606,608,611,614,617,619,622,624,627,629,632],{"class":383,"line":587},7,[381,589,590],{"class":575},"        pub",[381,592,593],{"class":401}," name",[381,595,596],{"class":387},":",[381,598,599],{"class":391}," String",[381,601,602],{"class":387}," =>",[381,604,605],{"class":391}," vld",[381,607,544],{"class":387},[381,609,610],{"class":547},"string",[381,612,613],{"class":387},"().",[381,615,616],{"class":547},"min",[381,618,563],{"class":387},[381,620,621],{"class":472},"2",[381,623,455],{"class":387},[381,625,626],{"class":547},"max",[381,628,563],{"class":387},[381,630,631],{"class":472},"50",[381,633,634],{"class":387},"),\n",[381,636,638,640,643,645,647,649,651,653,655,657,660],{"class":383,"line":637},8,[381,639,590],{"class":575},[381,641,642],{"class":401}," email",[381,644,596],{"class":387},[381,646,599],{"class":391},[381,648,602],{"class":387},[381,650,605],{"class":391},[381,652,544],{"class":387},[381,654,610],{"class":547},[381,656,613],{"class":387},[381,658,659],{"class":547},"email",[381,661,662],{"class":387},"(),\n",[381,664,666],{"class":383,"line":665},9,[381,667,668],{"class":387},"    }\n",[381,670,672],{"class":383,"line":671},10,[381,673,674],{"class":387},"}\n",[381,676,678],{"class":383,"line":677},11,[381,679,536],{"emptyLinePlaceholder":535},[381,681,683,685,687,689],{"class":383,"line":682},12,[381,684,541],{"class":391},[381,686,544],{"class":387},[381,688,548],{"class":547},[381,690,551],{"class":387},[381,692,694,696,698,700,702],{"class":383,"line":693},13,[381,695,557],{"class":387},[381,697,560],{"class":401},[381,699,563],{"class":387},[381,701,566],{"class":391},[381,703,569],{"class":387},[381,705,707,709,711,714],{"class":383,"line":706},14,[381,708,576],{"class":575},[381,710,579],{"class":575},[381,712,713],{"class":391}," UserPath",[381,715,551],{"class":387},[381,717,719,721,724,726,729,731,733,735,738,740,743,745,747,749,752],{"class":383,"line":718},15,[381,720,590],{"class":575},[381,722,723],{"class":401}," id",[381,725,596],{"class":387},[381,727,728],{"class":391}," i64",[381,730,602],{"class":387},[381,732,605],{"class":391},[381,734,544],{"class":387},[381,736,737],{"class":547},"number",[381,739,613],{"class":387},[381,741,742],{"class":547},"int",[381,744,613],{"class":387},[381,746,616],{"class":547},[381,748,563],{"class":387},[381,750,751],{"class":472},"1",[381,753,634],{"class":387},[381,755,757],{"class":383,"line":756},16,[381,758,668],{"class":387},[381,760,762],{"class":383,"line":761},17,[381,763,674],{"class":387},[381,765,767],{"class":383,"line":766},18,[381,768,536],{"emptyLinePlaceholder":535},[381,770,772,774,776,778],{"class":383,"line":771},19,[381,773,541],{"class":391},[381,775,544],{"class":387},[381,777,548],{"class":547},[381,779,551],{"class":387},[381,781,783,785,787,789,791],{"class":383,"line":782},20,[381,784,557],{"class":387},[381,786,560],{"class":401},[381,788,563],{"class":387},[381,790,566],{"class":391},[381,792,569],{"class":387},[381,794,796,798,800,803],{"class":383,"line":795},21,[381,797,576],{"class":575},[381,799,579],{"class":575},[381,801,802],{"class":391}," Search",[381,804,551],{"class":387},[381,806,808,810,813,815,817,819,821,823,825,827,829,831,833],{"class":383,"line":807},22,[381,809,590],{"class":575},[381,811,812],{"class":401}," q",[381,814,596],{"class":387},[381,816,599],{"class":391},[381,818,602],{"class":387},[381,820,605],{"class":391},[381,822,544],{"class":387},[381,824,610],{"class":547},[381,826,613],{"class":387},[381,828,616],{"class":547},[381,830,563],{"class":387},[381,832,751],{"class":472},[381,834,634],{"class":387},[381,836,838,840,843,845,848,851,854,857,859,861,863,865,867,869,871,873,875,877,879,882],{"class":383,"line":837},23,[381,839,590],{"class":575},[381,841,842],{"class":401}," page",[381,844,596],{"class":387},[381,846,847],{"class":391}," Option",[381,849,850],{"class":387},"\u003C",[381,852,853],{"class":391},"i64",[381,855,856],{"class":387},">",[381,858,602],{"class":387},[381,860,605],{"class":391},[381,862,544],{"class":387},[381,864,737],{"class":547},[381,866,613],{"class":387},[381,868,742],{"class":547},[381,870,613],{"class":387},[381,872,616],{"class":547},[381,874,563],{"class":387},[381,876,751],{"class":472},[381,878,455],{"class":387},[381,880,881],{"class":547},"optional",[381,883,662],{"class":387},[381,885,887],{"class":383,"line":886},24,[381,888,668],{"class":387},[381,890,892],{"class":383,"line":891},25,[381,893,674],{"class":387},[381,895,897],{"class":383,"line":896},26,[381,898,536],{"emptyLinePlaceholder":535},[381,900,902,905,908,911,913,916,918,920,922,925,928,931,933],{"class":383,"line":901},27,[381,903,904],{"class":472},"async",[381,906,907],{"class":472}," fn",[381,909,910],{"class":547}," create_user",[381,912,563],{"class":387},[381,914,915],{"class":401},"user",[381,917,596],{"class":387},[381,919,518],{"class":391},[381,921,850],{"class":387},[381,923,924],{"class":391},"CreateUser",[381,926,927],{"class":387},">)",[381,929,930],{"class":387}," ->",[381,932,493],{"class":391},[381,934,551],{"class":387},[381,936,938,941,943,946,948,951,953,956,958,961,964,967,969,972,974,977],{"class":383,"line":937},28,[381,939,940],{"class":391},"    HttpResponse",[381,942,544],{"class":387},[381,944,945],{"class":547},"Created",[381,947,613],{"class":387},[381,949,950],{"class":547},"body",[381,952,563],{"class":387},[381,954,955],{"class":547},"format!",[381,957,563],{"class":387},[381,959,960],{"class":387},"\"",[381,962,963],{"class":411},"created ",[381,965,966],{"class":387},"{}\"",[381,968,485],{"class":387},[381,970,971],{"class":401}," user",[381,973,364],{"class":387},[381,975,976],{"class":401},"name",[381,978,979],{"class":387},"))\n",[381,981,983],{"class":383,"line":982},29,[381,984,674],{"class":387},[381,986,988],{"class":383,"line":987},30,[381,989,536],{"emptyLinePlaceholder":535},[381,991,993,995,997,1000,1002,1005,1007,1009,1011,1014,1016,1018,1020],{"class":383,"line":992},31,[381,994,904],{"class":472},[381,996,907],{"class":472},[381,998,999],{"class":547}," get_user",[381,1001,563],{"class":387},[381,1003,1004],{"class":401},"path",[381,1006,596],{"class":387},[381,1008,523],{"class":391},[381,1010,850],{"class":387},[381,1012,1013],{"class":391},"UserPath",[381,1015,927],{"class":387},[381,1017,930],{"class":387},[381,1019,493],{"class":391},[381,1021,551],{"class":387},[381,1023,1025,1027,1029,1032,1034,1036,1038,1040,1042,1044,1047,1049,1051,1054,1056,1059],{"class":383,"line":1024},32,[381,1026,940],{"class":391},[381,1028,544],{"class":387},[381,1030,1031],{"class":391},"Ok",[381,1033,613],{"class":387},[381,1035,950],{"class":547},[381,1037,563],{"class":387},[381,1039,955],{"class":547},[381,1041,563],{"class":387},[381,1043,960],{"class":387},[381,1045,1046],{"class":411},"user #",[381,1048,966],{"class":387},[381,1050,485],{"class":387},[381,1052,1053],{"class":401}," path",[381,1055,364],{"class":387},[381,1057,1058],{"class":401},"id",[381,1060,979],{"class":387},[381,1062,1064],{"class":383,"line":1063},33,[381,1065,674],{"class":387},[381,1067,1069],{"class":383,"line":1068},34,[381,1070,536],{"emptyLinePlaceholder":535},[381,1072,1074,1076,1078,1081,1083,1086,1088,1090,1092,1095,1097,1099,1101],{"class":383,"line":1073},35,[381,1075,904],{"class":472},[381,1077,907],{"class":472},[381,1079,1080],{"class":547}," search",[381,1082,563],{"class":387},[381,1084,1085],{"class":401},"q",[381,1087,596],{"class":387},[381,1089,528],{"class":391},[381,1091,850],{"class":387},[381,1093,1094],{"class":391},"Search",[381,1096,927],{"class":387},[381,1098,930],{"class":387},[381,1100,493],{"class":391},[381,1102,551],{"class":387},[381,1104,1106,1108,1110,1112,1114,1116,1118,1120,1122,1125,1128,1131,1134,1136,1138,1140,1142,1144,1146,1148,1150,1153,1155,1158,1160,1162],{"class":383,"line":1105},36,[381,1107,940],{"class":391},[381,1109,544],{"class":387},[381,1111,1031],{"class":391},[381,1113,613],{"class":387},[381,1115,950],{"class":547},[381,1117,563],{"class":387},[381,1119,955],{"class":547},[381,1121,563],{"class":387},[381,1123,1124],{"class":387},"\"{}",[381,1126,1127],{"class":411}," (page ",[381,1129,1130],{"class":387},"{}",[381,1132,1133],{"class":411},")",[381,1135,960],{"class":387},[381,1137,485],{"class":387},[381,1139,812],{"class":401},[381,1141,364],{"class":387},[381,1143,1085],{"class":401},[381,1145,485],{"class":387},[381,1147,812],{"class":401},[381,1149,364],{"class":387},[381,1151,1152],{"class":401},"page",[381,1154,364],{"class":387},[381,1156,1157],{"class":547},"unwrap_or",[381,1159,563],{"class":387},[381,1161,751],{"class":472},[381,1163,1164],{"class":387},")))\n",[381,1166,1168],{"class":383,"line":1167},37,[381,1169,674],{"class":387},[381,1171,1173],{"class":383,"line":1172},38,[381,1174,536],{"emptyLinePlaceholder":535},[381,1176,1178,1181,1184,1186,1189],{"class":383,"line":1177},39,[381,1179,1180],{"class":387},"#[",[381,1182,1183],{"class":401},"actix_web",[381,1185,544],{"class":387},[381,1187,1188],{"class":401},"main",[381,1190,395],{"class":387},[381,1192,1194,1196,1198,1201,1204,1206,1209,1211,1214,1216,1219,1222],{"class":383,"line":1193},40,[381,1195,904],{"class":472},[381,1197,907],{"class":472},[381,1199,1200],{"class":547}," main",[381,1202,1203],{"class":387},"()",[381,1205,930],{"class":387},[381,1207,1208],{"class":391}," std",[381,1210,544],{"class":387},[381,1212,1213],{"class":391},"io",[381,1215,544],{"class":387},[381,1217,1218],{"class":391},"Result",[381,1220,1221],{"class":387},"\u003C()>",[381,1223,551],{"class":387},[381,1225,1227,1230,1232,1235,1238],{"class":383,"line":1226},41,[381,1228,1229],{"class":391},"    HttpServer",[381,1231,544],{"class":387},[381,1233,1234],{"class":547},"new",[381,1236,1237],{"class":387},"(||",[381,1239,551],{"class":387},[381,1241,1243,1246,1248,1250],{"class":383,"line":1242},42,[381,1244,1245],{"class":391},"        App",[381,1247,544],{"class":387},[381,1249,1234],{"class":547},[381,1251,1252],{"class":387},"()\n",[381,1254,1256,1259,1262,1264,1266,1268,1271,1274,1277,1279,1281,1284],{"class":383,"line":1255},43,[381,1257,1258],{"class":387},"            .",[381,1260,1261],{"class":547},"app_data",[381,1263,563],{"class":387},[381,1265,513],{"class":547},[381,1267,563],{"class":387},[381,1269,1270],{"class":472},"8",[381,1272,1273],{"class":387}," *",[381,1275,1276],{"class":472}," 1024",[381,1278,1273],{"class":387},[381,1280,1276],{"class":472},[381,1282,1283],{"class":387},"))",[381,1285,1287],{"class":1286},"sHwdD"," \u002F\u002F optional, default 2 MiB\n",[381,1289,1291,1293,1296,1298,1300,1303,1305,1307,1310,1312,1315,1317,1320,1322,1325],{"class":383,"line":1290},44,[381,1292,1258],{"class":387},[381,1294,1295],{"class":547},"route",[381,1297,563],{"class":387},[381,1299,960],{"class":387},[381,1301,1302],{"class":411},"\u002Fusers",[381,1304,960],{"class":387},[381,1306,485],{"class":387},[381,1308,1309],{"class":391}," web",[381,1311,544],{"class":387},[381,1313,1314],{"class":547},"post",[381,1316,613],{"class":387},[381,1318,1319],{"class":547},"to",[381,1321,563],{"class":387},[381,1323,1324],{"class":401},"create_user",[381,1326,979],{"class":387},[381,1328,1330,1332,1334,1336,1338,1341,1344,1346,1349,1351,1353,1355,1358,1360,1362,1364,1367],{"class":383,"line":1329},45,[381,1331,1258],{"class":387},[381,1333,1295],{"class":547},[381,1335,563],{"class":387},[381,1337,960],{"class":387},[381,1339,1340],{"class":411},"\u002Fusers\u002F",[381,1342,1343],{"class":387},"{",[381,1345,1058],{"class":411},[381,1347,1348],{"class":387},"}\"",[381,1350,485],{"class":387},[381,1352,1309],{"class":391},[381,1354,544],{"class":387},[381,1356,1357],{"class":547},"get",[381,1359,613],{"class":387},[381,1361,1319],{"class":547},[381,1363,563],{"class":387},[381,1365,1366],{"class":401},"get_user",[381,1368,979],{"class":387},[381,1370,1372,1374,1376,1378,1380,1383,1385,1387,1389,1391,1393,1395,1397,1399,1402],{"class":383,"line":1371},46,[381,1373,1258],{"class":387},[381,1375,1295],{"class":547},[381,1377,563],{"class":387},[381,1379,960],{"class":387},[381,1381,1382],{"class":411},"\u002Fsearch",[381,1384,960],{"class":387},[381,1386,485],{"class":387},[381,1388,1309],{"class":391},[381,1390,544],{"class":387},[381,1392,1357],{"class":547},[381,1394,613],{"class":387},[381,1396,1319],{"class":547},[381,1398,563],{"class":387},[381,1400,1401],{"class":401},"search",[381,1403,979],{"class":387},[381,1405,1407],{"class":383,"line":1406},47,[381,1408,1409],{"class":387},"    })\n",[381,1411,1413,1416,1419,1421,1423,1426,1428],{"class":383,"line":1412},48,[381,1414,1415],{"class":387},"    .",[381,1417,1418],{"class":547},"bind",[381,1420,563],{"class":387},[381,1422,960],{"class":387},[381,1424,1425],{"class":411},"127.0.0.1:8080",[381,1427,960],{"class":387},[381,1429,1430],{"class":387},")?\n",[381,1432,1434,1436,1439],{"class":383,"line":1433},49,[381,1435,1415],{"class":387},[381,1437,1438],{"class":547},"run",[381,1440,1252],{"class":387},[381,1442,1444,1446],{"class":383,"line":1443},50,[381,1445,1415],{"class":387},[381,1447,1449],{"class":1448},"s7zQu","await\n",[381,1451,1453],{"class":383,"line":1452},51,[381,1454,674],{"class":387},[341,1456,1457,1458,1461,1462,455],{},"The full example is ",[345,1459,1460],{},"crates\u002Fvld-actix\u002Fexamples\u002Factix_basic.rs"," (",[345,1463,1464],{},"cargo run -p vld-actix --example actix_basic",[366,1466,1468],{"id":1467},"api","API",[1470,1471,1472,1485],"table",{},[1473,1474,1475],"thead",{},[1476,1477,1478,1482],"tr",{},[1479,1480,1481],"th",{},"Item",[1479,1483,1484],{},"Description",[1486,1487,1488,1502,1512,1525,1538,1555,1569,1592,1614],"tbody",{},[1476,1489,1490,1496],{},[1491,1492,1493],"td",{},[345,1494,1495],{},"VldJson\u003CT>",[1491,1497,1498,1499,1133],{},"JSON body (requires a JSON ",[345,1500,1501],{},"Content-Type",[1476,1503,1504,1509],{},[1491,1505,1506],{},[345,1507,1508],{},"VldQuery\u003CT>",[1491,1510,1511],{},"Query string",[1476,1513,1514,1519],{},[1491,1515,1516],{},[345,1517,1518],{},"VldPath\u003CT>",[1491,1520,1521,1522],{},"Path parameters, including custom patterns such as ",[345,1523,1524],{},"{id:\\d+}",[1476,1526,1527,1532],{},[1491,1528,1529],{},[345,1530,1531],{},"VldForm\u003CT>",[1491,1533,1534,1537],{},[345,1535,1536],{},"application\u002Fx-www-form-urlencoded"," body",[1476,1539,1540,1545],{},[1491,1541,1542],{},[345,1543,1544],{},"VldHeaders\u003CT>",[1491,1546,1547,1548,1551,1552,1133],{},"Request headers (",[345,1549,1550],{},"X-Request-Id"," → ",[345,1553,1554],{},"x_request_id",[1476,1556,1557,1562],{},[1491,1558,1559],{},[345,1560,1561],{},"VldCookie\u003CT>",[1491,1563,1564,1565,1568],{},"Cookies from all ",[345,1566,1567],{},"Cookie"," headers",[1476,1570,1571,1576],{},[1491,1572,1573],{},[345,1574,1575],{},"VldActixError",[1491,1577,1578,1579,1582,1583,348,1586,348,1589],{},"Error of every extractor (",[345,1580,1581],{},"ResponseError","): ",[345,1584,1585],{},"status()",[345,1587,1588],{},"body()",[345,1590,1591],{},"error()",[1476,1593,1594,1598],{},[1491,1595,1596],{},[345,1597,513],{},[1491,1599,1600,1601,1604,1605,1608,1609,1611,1612,1133],{},"Body size limit for ",[345,1602,1603],{},"VldJson"," \u002F ",[345,1606,1607],{},"VldForm",", registered with ",[345,1610,1261],{}," (re-exported from ",[345,1613,298],{},[1476,1615,1616,1621],{},[1491,1617,1618],{},[345,1619,1620],{},"prelude",[1491,1622,1623,1624],{},"Everything above plus ",[345,1625,1626],{},"vld::prelude::*",[341,1628,1629,1630,1604,1633,1636,1637,1640,1641,1644,1645,1648,1649,1652],{},"Extractors implement ",[345,1631,1632],{},"Deref",[345,1634,1635],{},"DerefMut"," to ",[345,1638,1639],{},"T",", so ",[345,1642,1643],{},"user.name"," works directly; ",[345,1646,1647],{},"user.0"," or ",[345,1650,1651],{},"let VldJson(user) = user;"," moves the value out.",[366,1654,1656],{"id":1655},"gotchas","Gotchas",[1658,1659,1660,1694,1704],"ul",{},[1661,1662,1663,1666,1667,355,1669,1671,1672,355,1675,1678,1679,1682,1683,1686,1687,1690,1691,364],"li",{},[449,1664,1665],{},"Body limit",": ",[345,1668,1603],{},[345,1670,1607],{}," read the payload themselves; actix's ",[345,1673,1674],{},"JsonConfig",[345,1676,1677],{},"PayloadConfig"," do ",[449,1680,1681],{},"not"," apply. Register ",[345,1684,1685],{},"VldBodyLimit(n)"," with ",[345,1688,1689],{},"App::app_data"," (or on a scope \u002F resource); not wrapped in ",[345,1692,1693],{},"web::Data",[1661,1695,1696,1697,348,1700,1703],{},"Compressed bodies (",[345,1698,1699],{},"Content-Encoding: gzip",[345,1701,1702],{},"br",", ...) are decoded before validation; the limit applies to the decoded size.",[1661,1705,1706,1707,348,1710,355,1713,1716,1717,1720,1721,1724,1725,1728,1729,364],{},"Actix keeps ",[345,1708,1709],{},"%2F",[345,1711,1712],{},"%25",[345,1714,1715],{},"%2B"," encoded in ",[345,1718,1719],{},"match_info","; ",[345,1722,1723],{},"VldPath"," decodes them, so ",[345,1726,1727],{},"\u002Ffiles\u002Fa%2Fb"," gives ",[345,1730,1731],{},"\"a\u002Fb\"",[1733,1734,1735],"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}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}",{"title":377,"searchDepth":398,"depth":418,"links":1737},[1738,1739,1740,1741],{"id":368,"depth":398,"text":369},{"id":458,"depth":398,"text":459},{"id":1467,"depth":398,"text":1468},{"id":1655,"depth":398,"text":1656},"Actix-web extractors that validate JSON bodies, query strings, path parameters, forms, headers and cookies with vld schemas.","md",[1745,1750],{"label":1746,"icon":1747,"to":1748,"target":1749},"crates.io","i-simple-icons-rust","https:\u002F\u002Fcrates.io\u002Fcrates\u002Fvld-actix","_blank",{"label":1751,"icon":307,"to":1752,"target":1749},"docs.rs","https:\u002F\u002Fdocs.rs\u002Fvld-actix",{},{"title":156,"description":1742},"bzLxCnp4Ws3g3VF97E_5ftDpvpezezFH716b2dZ4MMY",[1757,1759],{"title":152,"path":153,"stem":154,"description":1758,"children":-1},"Axum extractors that validate JSON bodies, query strings, path parameters, forms, headers and cookies with vld schemas.",{"title":160,"path":161,"stem":162,"description":1760,"children":-1},"ntex 3 and ntex 4 extractors that validate JSON bodies, query strings, path parameters, forms, headers and cookies with vld schemas.",1794036360875]