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