[{"data":1,"prerenderedAt":1438},["ShallowReactive",2],{"navigation":3,"\u002Fintegrations\u002Fdatabase\u002Fdiesel":335,"\u002Fintegrations\u002Fdatabase\u002Fdiesel-surround":1433},[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":234,"body":337,"description":1419,"extension":1420,"links":1421,"meta":1430,"navigation":596,"path":235,"seo":1431,"stem":236,"__hash__":1432},"docs\u002F6.integrations\u002F4.database\u002F2.diesel.md",{"type":338,"value":339,"toc":1412},"minimark",[340,363,368,480,484,543,550,554,1209,1213,1329,1333,1408],[341,342,343,346,347,350,351,354,355,358,359,362],"p",{},[344,345,234],"code",{}," validates a value against a vld schema before Diesel writes it, and provides column wrappers that derive ",[344,348,349],{},"AsExpression"," \u002F ",[344,352,353],{},"FromSqlRow",", so they work in ",[344,356,357],{},"#[derive(Insertable, Queryable)]"," structs and in ",[344,360,361],{},".filter(col.eq(wrapper))",".",[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-diesel = \"0.5\"  # SQLite backend by default\ndiesel = { version = \"2\", features = [\"sqlite\"] }\n","Cargo.toml","toml","",[344,377,378,394,414,433],{"__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,429],{"class":381,"line":416},3,[379,418,419],{"class":399},"vld-diesel ",[379,421,403],{"class":385},[379,423,406],{"class":385},[379,425,410],{"class":409},[379,427,428],{"class":385},"\"",[379,430,432],{"class":431},"sHwdD","  # SQLite backend by default\n",[379,434,436,439,441,444,447,449,451,454,456,459,462,464,467,469,472,474,477],{"class":381,"line":435},4,[379,437,438],{"class":399},"diesel ",[379,440,403],{"class":385},[379,442,443],{"class":385}," {",[379,445,446],{"class":399}," version ",[379,448,403],{"class":385},[379,450,406],{"class":385},[379,452,453],{"class":409},"2",[379,455,428],{"class":385},[379,457,458],{"class":385},",",[379,460,461],{"class":399}," features ",[379,463,403],{"class":385},[379,465,466],{"class":385}," [",[379,468,428],{"class":385},[379,470,471],{"class":409},"sqlite",[379,473,428],{"class":385},[379,475,476],{"class":385},"]",[379,478,479],{"class":385}," }\n",[364,481,483],{"id":482},"features","Features",[485,486,487,503],"table",{},[488,489,490],"thead",{},[491,492,493,497,500],"tr",{},[494,495,496],"th",{},"Feature",[494,498,499],{},"Default",[494,501,502],{},"Effect",[504,505,506,519,531],"tbody",{},[491,507,508,513,516],{},[509,510,511],"td",{},[344,512,471],{},[509,514,515],{},"yes",[509,517,518],{},"Diesel SQLite backend",[491,520,521,526,528],{},[509,522,523],{},[344,524,525],{},"postgres",[509,527],{},[509,529,530],{},"Diesel Postgres backend",[491,532,533,538,540],{},[509,534,535],{},[344,536,537],{},"mysql",[509,539],{},[509,541,542],{},"Diesel MySQL backend",[341,544,545,546,549],{},"Backends are additive. MSRV: 1.85 (see ",[547,548,23],"a",{"href":24},").",[364,551,553],{"id":552},"example","Example",[369,555,559],{"className":556,"code":557,"language":558,"meta":375,"style":375},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use diesel::prelude::*;\nuse vld_diesel::prelude::*;\n\nvld::schema! {\n    #[derive(Debug)]\n    pub struct NewUserSchema {\n        pub name: String  => vld::string().min(1).max(100),\n        pub email: String => vld::string().email(),\n        pub age: i64      => vld::number().int().min(0).max(150),\n    }\n}\n\ndiesel::table! {\n    users (id) {\n        id -> Integer,\n        name -> Text,\n        email -> Text,\n        age -> BigInt,\n    }\n}\n\n#[derive(Debug, Insertable, serde::Serialize)]\n#[diesel(table_name = users)]\nstruct NewUser { name: String, email: String, age: i64 }\n\nfn insert(conn: &mut SqliteConnection) -> Result\u003C(), Box\u003Cdyn std::error::Error>> {\n    let user = NewUser { name: \"Bob\".into(), email: \"bob@example.com\".into(), age: 25 };\n    let validated = Validated::\u003CNewUserSchema, _>::new(user)?;\n    diesel::insert_into(users::table)\n        .values(validated.inner())\n        .execute(conn)?;\n    Ok(())\n}\n","rust",[344,560,561,579,592,598,612,630,645,695,724,772,778,784,789,802,818,833,846,858,871,876,881,886,915,934,969,974,1037,1098,1136,1159,1181,1195,1204],{"__ignoreMap":375},[379,562,563,567,570,573,576],{"class":381,"line":382},[379,564,566],{"class":565},"sbssI","use",[379,568,569],{"class":389}," diesel",[379,571,572],{"class":385},"::",[379,574,575],{"class":389},"prelude",[379,577,578],{"class":385},"::*;\n",[379,580,581,583,586,588,590],{"class":381,"line":396},[379,582,566],{"class":565},[379,584,585],{"class":389}," vld_diesel",[379,587,572],{"class":385},[379,589,575],{"class":389},[379,591,578],{"class":385},[379,593,594],{"class":381,"line":416},[379,595,597],{"emptyLinePlaceholder":596},true,"\n",[379,599,600,603,605,609],{"class":381,"line":435},[379,601,602],{"class":389},"vld",[379,604,572],{"class":385},[379,606,608],{"class":607},"s2Zo4","schema!",[379,610,611],{"class":385}," {\n",[379,613,615,618,621,624,627],{"class":381,"line":614},5,[379,616,617],{"class":385},"    #[",[379,619,620],{"class":399},"derive",[379,622,623],{"class":385},"(",[379,625,626],{"class":389},"Debug",[379,628,629],{"class":385},")]\n",[379,631,633,637,640,643],{"class":381,"line":632},6,[379,634,636],{"class":635},"spNyl","    pub",[379,638,639],{"class":635}," struct",[379,641,642],{"class":389}," NewUserSchema",[379,644,611],{"class":385},[379,646,648,651,654,657,660,663,666,668,671,674,677,679,682,684,687,689,692],{"class":381,"line":647},7,[379,649,650],{"class":635},"        pub",[379,652,653],{"class":399}," name",[379,655,656],{"class":385},":",[379,658,659],{"class":389}," String",[379,661,662],{"class":385},"  =>",[379,664,665],{"class":389}," vld",[379,667,572],{"class":385},[379,669,670],{"class":607},"string",[379,672,673],{"class":385},"().",[379,675,676],{"class":607},"min",[379,678,623],{"class":385},[379,680,681],{"class":565},"1",[379,683,549],{"class":385},[379,685,686],{"class":607},"max",[379,688,623],{"class":385},[379,690,691],{"class":565},"100",[379,693,694],{"class":385},"),\n",[379,696,698,700,703,705,707,710,712,714,716,718,721],{"class":381,"line":697},8,[379,699,650],{"class":635},[379,701,702],{"class":399}," email",[379,704,656],{"class":385},[379,706,659],{"class":389},[379,708,709],{"class":385}," =>",[379,711,665],{"class":389},[379,713,572],{"class":385},[379,715,670],{"class":607},[379,717,673],{"class":385},[379,719,720],{"class":607},"email",[379,722,723],{"class":385},"(),\n",[379,725,727,729,732,734,737,740,742,744,747,749,752,754,756,758,761,763,765,767,770],{"class":381,"line":726},9,[379,728,650],{"class":635},[379,730,731],{"class":399}," age",[379,733,656],{"class":385},[379,735,736],{"class":389}," i64",[379,738,739],{"class":385},"      =>",[379,741,665],{"class":389},[379,743,572],{"class":385},[379,745,746],{"class":607},"number",[379,748,673],{"class":385},[379,750,751],{"class":607},"int",[379,753,673],{"class":385},[379,755,676],{"class":607},[379,757,623],{"class":385},[379,759,760],{"class":565},"0",[379,762,549],{"class":385},[379,764,686],{"class":607},[379,766,623],{"class":385},[379,768,769],{"class":565},"150",[379,771,694],{"class":385},[379,773,775],{"class":381,"line":774},10,[379,776,777],{"class":385},"    }\n",[379,779,781],{"class":381,"line":780},11,[379,782,783],{"class":385},"}\n",[379,785,787],{"class":381,"line":786},12,[379,788,597],{"emptyLinePlaceholder":596},[379,790,792,795,797,800],{"class":381,"line":791},13,[379,793,794],{"class":389},"diesel",[379,796,572],{"class":385},[379,798,799],{"class":607},"table!",[379,801,611],{"class":385},[379,803,805,808,810,813,816],{"class":381,"line":804},14,[379,806,807],{"class":399},"    users ",[379,809,623],{"class":385},[379,811,812],{"class":399},"id",[379,814,815],{"class":385},")",[379,817,611],{"class":385},[379,819,821,824,827,830],{"class":381,"line":820},15,[379,822,823],{"class":399},"        id ",[379,825,826],{"class":385},"->",[379,828,829],{"class":389}," Integer",[379,831,832],{"class":385},",\n",[379,834,836,839,841,844],{"class":381,"line":835},16,[379,837,838],{"class":399},"        name ",[379,840,826],{"class":385},[379,842,843],{"class":389}," Text",[379,845,832],{"class":385},[379,847,849,852,854,856],{"class":381,"line":848},17,[379,850,851],{"class":399},"        email ",[379,853,826],{"class":385},[379,855,843],{"class":389},[379,857,832],{"class":385},[379,859,861,864,866,869],{"class":381,"line":860},18,[379,862,863],{"class":399},"        age ",[379,865,826],{"class":385},[379,867,868],{"class":389}," BigInt",[379,870,832],{"class":385},[379,872,874],{"class":381,"line":873},19,[379,875,777],{"class":385},[379,877,879],{"class":381,"line":878},20,[379,880,783],{"class":385},[379,882,884],{"class":381,"line":883},21,[379,885,597],{"emptyLinePlaceholder":596},[379,887,889,892,894,896,898,900,903,905,908,910,913],{"class":381,"line":888},22,[379,890,891],{"class":385},"#[",[379,893,620],{"class":399},[379,895,623],{"class":385},[379,897,626],{"class":389},[379,899,458],{"class":385},[379,901,902],{"class":389}," Insertable",[379,904,458],{"class":385},[379,906,907],{"class":399}," serde",[379,909,572],{"class":385},[379,911,912],{"class":389},"Serialize",[379,914,629],{"class":385},[379,916,918,920,922,924,927,929,932],{"class":381,"line":917},23,[379,919,891],{"class":385},[379,921,794],{"class":399},[379,923,623],{"class":385},[379,925,926],{"class":399},"table_name ",[379,928,403],{"class":385},[379,930,931],{"class":399}," users",[379,933,629],{"class":385},[379,935,937,940,943,945,947,949,951,953,955,957,959,961,963,965,967],{"class":381,"line":936},24,[379,938,939],{"class":635},"struct",[379,941,942],{"class":389}," NewUser",[379,944,443],{"class":385},[379,946,653],{"class":399},[379,948,656],{"class":385},[379,950,659],{"class":389},[379,952,458],{"class":385},[379,954,702],{"class":399},[379,956,656],{"class":385},[379,958,659],{"class":389},[379,960,458],{"class":385},[379,962,731],{"class":399},[379,964,656],{"class":385},[379,966,736],{"class":389},[379,968,479],{"class":385},[379,970,972],{"class":381,"line":971},25,[379,973,597],{"emptyLinePlaceholder":596},[379,975,977,980,983,985,988,990,993,996,999,1001,1004,1007,1010,1013,1016,1019,1022,1024,1027,1029,1032,1035],{"class":381,"line":976},26,[379,978,979],{"class":565},"fn",[379,981,982],{"class":607}," insert",[379,984,623],{"class":385},[379,986,987],{"class":399},"conn",[379,989,656],{"class":385},[379,991,992],{"class":385}," &",[379,994,995],{"class":635},"mut",[379,997,998],{"class":389}," SqliteConnection",[379,1000,815],{"class":385},[379,1002,1003],{"class":385}," ->",[379,1005,1006],{"class":389}," Result",[379,1008,1009],{"class":385},"\u003C(),",[379,1011,1012],{"class":389}," Box",[379,1014,1015],{"class":385},"\u003C",[379,1017,1018],{"class":565},"dyn",[379,1020,1021],{"class":399}," std",[379,1023,572],{"class":385},[379,1025,1026],{"class":399},"error",[379,1028,572],{"class":385},[379,1030,1031],{"class":389},"Error",[379,1033,1034],{"class":385},">>",[379,1036,611],{"class":385},[379,1038,1040,1043,1046,1048,1050,1052,1054,1056,1058,1061,1063,1065,1068,1071,1073,1075,1077,1080,1082,1084,1086,1088,1090,1092,1095],{"class":381,"line":1039},27,[379,1041,1042],{"class":635},"    let",[379,1044,1045],{"class":399}," user ",[379,1047,403],{"class":385},[379,1049,942],{"class":389},[379,1051,443],{"class":385},[379,1053,653],{"class":399},[379,1055,656],{"class":385},[379,1057,406],{"class":385},[379,1059,1060],{"class":409},"Bob",[379,1062,428],{"class":385},[379,1064,362],{"class":385},[379,1066,1067],{"class":607},"into",[379,1069,1070],{"class":385},"(),",[379,1072,702],{"class":399},[379,1074,656],{"class":385},[379,1076,406],{"class":385},[379,1078,1079],{"class":409},"bob@example.com",[379,1081,428],{"class":385},[379,1083,362],{"class":385},[379,1085,1067],{"class":607},[379,1087,1070],{"class":385},[379,1089,731],{"class":399},[379,1091,656],{"class":385},[379,1093,1094],{"class":565}," 25",[379,1096,1097],{"class":385}," };\n",[379,1099,1101,1103,1106,1108,1111,1114,1117,1119,1122,1125,1128,1130,1133],{"class":381,"line":1100},28,[379,1102,1042],{"class":635},[379,1104,1105],{"class":399}," validated ",[379,1107,403],{"class":385},[379,1109,1110],{"class":389}," Validated",[379,1112,1113],{"class":385},"::\u003C",[379,1115,1116],{"class":389},"NewUserSchema",[379,1118,458],{"class":385},[379,1120,1121],{"class":399}," _",[379,1123,1124],{"class":385},">::",[379,1126,1127],{"class":607},"new",[379,1129,623],{"class":385},[379,1131,1132],{"class":399},"user",[379,1134,1135],{"class":385},")?;\n",[379,1137,1139,1142,1144,1147,1149,1152,1154,1156],{"class":381,"line":1138},29,[379,1140,1141],{"class":389},"    diesel",[379,1143,572],{"class":385},[379,1145,1146],{"class":607},"insert_into",[379,1148,623],{"class":385},[379,1150,1151],{"class":389},"users",[379,1153,572],{"class":385},[379,1155,485],{"class":399},[379,1157,1158],{"class":385},")\n",[379,1160,1162,1165,1168,1170,1173,1175,1178],{"class":381,"line":1161},30,[379,1163,1164],{"class":385},"        .",[379,1166,1167],{"class":607},"values",[379,1169,623],{"class":385},[379,1171,1172],{"class":399},"validated",[379,1174,362],{"class":385},[379,1176,1177],{"class":607},"inner",[379,1179,1180],{"class":385},"())\n",[379,1182,1184,1186,1189,1191,1193],{"class":381,"line":1183},31,[379,1185,1164],{"class":385},[379,1187,1188],{"class":607},"execute",[379,1190,623],{"class":385},[379,1192,987],{"class":399},[379,1194,1135],{"class":385},[379,1196,1198,1201],{"class":381,"line":1197},32,[379,1199,1200],{"class":389},"    Ok",[379,1202,1203],{"class":385},"(())\n",[379,1205,1207],{"class":381,"line":1206},33,[379,1208,783],{"class":385},[364,1210,1212],{"id":1211},"api","API",[1214,1215,1216,1230,1236,1259,1309,1321],"ul",{},[1217,1218,1219,1222,1223,1226,1227,362],"li",{},[344,1220,1221],{},"validate_insert::\u003CS, T>(&value)"," — serialize ",[344,1224,1225],{},"value"," to JSON and validate it against schema type ",[344,1228,1229],{},"S",[1217,1231,1232,1235],{},[344,1233,1234],{},"validate_row::\u003CS, T>(&row)"," — the same check for a loaded row.",[1217,1237,1238,1241,1242,1245,1246,1249,1250,1249,1253,1256,1257,362],{},[344,1239,1240],{},"Validated\u003CS, T>"," — ",[344,1243,1244],{},"Validated::new(value)"," validates and wraps; ",[344,1247,1248],{},"inner()",", ",[344,1251,1252],{},"into_inner()",[344,1254,1255],{},"Deref",", transparent ",[344,1258,912],{},[1217,1260,1261,1264,1265,1268,1269,1264,1272,1249,1275,1268,1278,1264,1281,1249,1284,1268,1287,1264,1290,1293,1294,350,1297,1300,1301,1304,1305,1308],{},[344,1262,1263],{},"VldText\u003CS>"," (",[344,1266,1267],{},"Text","), ",[344,1270,1271],{},"VldInt\u003CS>",[344,1273,1274],{},"BigInt",[344,1276,1277],{},"Integer",[344,1279,1280],{},"VldFloat\u003CS>",[344,1282,1283],{},"Double",[344,1285,1286],{},"Float",[344,1288,1289],{},"VldBool\u003CS>",[344,1291,1292],{},"Bool",") — column wrappers with ",[344,1295,1296],{},"ToSql",[344,1298,1299],{},"FromSql","; ",[344,1302,1303],{},"new()"," validates, ",[344,1306,1307],{},"new_unchecked()"," does not.",[1217,1310,1311,1241,1314,1317,1318,362],{},[344,1312,1313],{},"VldDieselError",[344,1315,1316],{},"Validation(VldError)"," or ",[344,1319,1320],{},"Serialization(String)",[1217,1322,1323,1325,1326,362],{},[344,1324,575],{}," — all of the above plus ",[344,1327,1328],{},"vld::prelude::*",[364,1330,1332],{"id":1331},"gotchas","Gotchas",[1214,1334,1335,1351,1367,1399],{},[1217,1336,1337,1344,1345,1348,1349,362],{},[1338,1339,1340,1341,1343],"strong",{},"Column schemas need a ",[344,1342,1225],{}," field",": a wrapper validates ",[344,1346,1347],{},"{\"value\": v}"," against ",[344,1350,1229],{},[1217,1352,1353,1358,1359,1362,1363,1366],{},[1338,1354,1355,1357],{},[344,1356,1299],{}," does not re-validate",": loaded values are wrapped with ",[344,1360,1361],{},"new_unchecked",". Use ",[344,1364,1365],{},"validate_row"," to re-check.",[1217,1368,1369,1372,1373,1375,1376,1379,1380,1382,1383,350,1386,1389,1390,1392,1393,1396,1397,549],{},[344,1370,1371],{},"VldInt"," on an ",[344,1374,1277],{}," column and ",[344,1377,1378],{},"VldFloat"," on a ",[344,1381,1286],{}," column narrow on write (per backend) and fail instead of truncating when the value does not fit ",[344,1384,1385],{},"i32",[344,1387,1388],{},"f32",". Reading ",[344,1391,1286],{}," widens through the decimal form (",[344,1394,1395],{},"0.1"," stays ",[344,1398,1395],{},[1217,1400,1401,1403,1404,1407],{},[344,1402,1240],{}," stores the original ",[344,1405,1406],{},"T",": schema transforms and defaults are not applied to it.",[1409,1410,1411],"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":375,"searchDepth":396,"depth":416,"links":1413},[1414,1415,1416,1417,1418],{"id":366,"depth":396,"text":367},{"id":482,"depth":396,"text":483},{"id":552,"depth":396,"text":553},{"id":1211,"depth":396,"text":1212},{"id":1331,"depth":396,"text":1332},"Validate Insertable structs before insert and use validated column types in Diesel models and filters.","md",[1422,1427],{"label":1423,"icon":1424,"to":1425,"target":1426},"crates.io","i-simple-icons-rust","https:\u002F\u002Fcrates.io\u002Fcrates\u002Fvld-diesel","_blank",{"label":1428,"icon":307,"to":1429,"target":1426},"docs.rs","https:\u002F\u002Fdocs.rs\u002Fvld-diesel",{},{"title":234,"description":1419},"BsLm0iUHdKgf5kEkIo2NvSy7PCDvZWATTHTS7CUrThA",[1434,1436],{"title":230,"path":231,"stem":232,"description":1435,"children":-1},"Validate rows before insert and after select, and bind validated column wrappers with SQLx.",{"title":238,"path":239,"stem":240,"description":1437,"children":-1},"Validate SeaORM ActiveModels before insert and update, manually or in before_save.",1794036362233]