[{"data":1,"prerenderedAt":770},["ShallowReactive",2],{"navigation":3,"\u002Fintegrations\u002Fshared\u002Fintegration-common":335,"\u002Fintegrations\u002Fshared\u002Fintegration-common-surround":765},[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":302,"body":337,"description":751,"extension":752,"links":753,"meta":762,"navigation":590,"path":303,"seo":763,"stem":304,"__hash__":764},"docs\u002F6.integrations\u002F8.shared\u002F2.integration-common.md",{"type":338,"value":339,"toc":746},"minimark",[340,352,442,448,453,544,548,723,727,742],[341,342,343,346,347,351],"p",{},[344,345,302],"code",{}," holds the code that several integration crates share. ",[348,349,350],"strong",{},"It is an internal crate with no stable API of its own",": depend on the integration crate you need, which re-exports what it uses from here.",[353,354,355,368],"table",{},[356,357,358],"thead",{},[359,360,361,365],"tr",{},[362,363,364],"th",{},"Crate",[362,366,367],{},"Uses",[369,370,371,392,410],"tbody",{},[359,372,373,382],{},[374,375,376,379,380],"td",{},[377,378,280],"a",{"href":281},", ",[377,381,284],{"href":285},[374,383,384,387,388,391],{},[344,385,386],{},"form"," module and ",[344,389,390],{},"validate_args!",", re-exported as-is",[359,393,394,400],{},[374,395,396,379,398],{},[377,397,288],{"href":289},[377,399,270],{"href":271},[374,401,402,405,406,409],{},[344,403,404],{},"format_path"," \u002F ",[344,407,408],{},"flatten_issues"," for issue paths",[359,411,412,422],{},[374,413,414,379,416,379,418,379,420],{},[377,415,230],{"href":231},[377,417,234],{"href":235},[377,419,238],{"href":239},[377,421,242],{"href":243},[374,423,424,425,428,429,405,432,405,435,405,438,441],{},"macros generating each crate's error type, ",[344,426,427],{},"Validated\u003CS, T>"," and the ",[344,430,431],{},"VldText",[344,433,434],{},"VldInt",[344,436,437],{},"VldFloat",[344,439,440],{},"VldBool"," column wrappers",[341,443,444,445,447],{},"No features. MSRV: 1.85 (see ",[377,446,23],{"href":24},").",[449,450,452],"h2",{"id":451},"contents","Contents",[454,455,456,474,486,517],"ul",{},[457,458,459,462,463,379,466,469,470,473],"li",{},[344,460,461],{},"format_path(&[PathSegment])"," — a clean dotted path: ",[344,464,465],{},"user.email",[344,467,468],{},"items[0].name",", no leading dot; an empty path gives ",[344,471,472],{},"\"\"",".",[457,475,476,479,480,483,484,473],{},[344,477,478],{},"flatten_issues(&VldError)"," — ",[344,481,482],{},"(path, message)"," pairs built with ",[344,485,404],{},[457,487,488,479,490,379,493,379,496,379,499,379,502,379,505,379,508,428,511,513,514,516],{},[344,489,386],{},[344,491,492],{},"FieldError",[344,494,495],{},"VldServerError",[344,497,498],{},"validate",[344,500,501],{},"validate_value",[344,503,504],{},"check_field",[344,506,507],{},"check_field_all",[344,509,510],{},"check_all_fields",[344,512,390],{}," macro (documented on the ",[377,515,280],{"href":281}," page).",[457,518,519,522,523,379,526,379,529,532,533,536,537,379,540,543],{},[344,520,521],{},"db"," — hidden macros (",[344,524,525],{},"__vld_db_error!",[344,527,528],{},"__vld_db_validated!",[344,530,531],{},"__vld_db_wrappers!","). The wrapper types are generated ",[348,534,535],{},"inside"," each database crate so that it can implement its own database traits (",[344,538,539],{},"sqlx::Type",[344,541,542],{},"diesel::ToSql",", …) without orphan-rule conflicts.",[449,545,547],{"id":546},"example","Example",[549,550,555],"pre",{"className":551,"code":552,"language":553,"meta":554,"style":554},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use vld::error::PathSegment;\n\nlet path = [\n    PathSegment::Field(\"items\".into()),\n    PathSegment::Index(0),\n    PathSegment::Field(\"name\".into()),\n];\nassert_eq!(vld_integration_common::format_path(&path), \"items[0].name\");\n","rust","",[344,556,557,585,592,609,641,659,683,689],{"__ignoreMap":554},[558,559,562,566,570,574,577,579,582],"span",{"class":560,"line":561},"line",1,[558,563,565],{"class":564},"sbssI","use",[558,567,569],{"class":568},"sBMFI"," vld",[558,571,573],{"class":572},"sMK4o","::",[558,575,576],{"class":568},"error",[558,578,573],{"class":572},[558,580,581],{"class":568},"PathSegment",[558,583,584],{"class":572},";\n",[558,586,588],{"class":560,"line":587},2,[558,589,591],{"emptyLinePlaceholder":590},true,"\n",[558,593,595,599,603,606],{"class":560,"line":594},3,[558,596,598],{"class":597},"spNyl","let",[558,600,602],{"class":601},"sTEyZ"," path ",[558,604,605],{"class":572},"=",[558,607,608],{"class":572}," [\n",[558,610,612,615,617,621,624,627,631,633,635,638],{"class":560,"line":611},4,[558,613,614],{"class":568},"    PathSegment",[558,616,573],{"class":572},[558,618,620],{"class":619},"s2Zo4","Field",[558,622,623],{"class":572},"(",[558,625,626],{"class":572},"\"",[558,628,630],{"class":629},"sfazB","items",[558,632,626],{"class":572},[558,634,473],{"class":572},[558,636,637],{"class":619},"into",[558,639,640],{"class":572},"()),\n",[558,642,644,646,648,651,653,656],{"class":560,"line":643},5,[558,645,614],{"class":568},[558,647,573],{"class":572},[558,649,650],{"class":619},"Index",[558,652,623],{"class":572},[558,654,655],{"class":564},"0",[558,657,658],{"class":572},"),\n",[558,660,662,664,666,668,670,672,675,677,679,681],{"class":560,"line":661},6,[558,663,614],{"class":568},[558,665,573],{"class":572},[558,667,620],{"class":619},[558,669,623],{"class":572},[558,671,626],{"class":572},[558,673,674],{"class":629},"name",[558,676,626],{"class":572},[558,678,473],{"class":572},[558,680,637],{"class":619},[558,682,640],{"class":572},[558,684,686],{"class":560,"line":685},7,[558,687,688],{"class":572},"];\n",[558,690,692,695,697,700,702,704,707,710,713,716,718,720],{"class":560,"line":691},8,[558,693,694],{"class":619},"assert_eq!",[558,696,623],{"class":572},[558,698,699],{"class":568},"vld_integration_common",[558,701,573],{"class":572},[558,703,404],{"class":619},[558,705,706],{"class":572},"(&",[558,708,709],{"class":601},"path",[558,711,712],{"class":572},"),",[558,714,715],{"class":572}," \"",[558,717,468],{"class":629},[558,719,626],{"class":572},[558,721,722],{"class":572},");\n",[449,724,726],{"id":725},"gotchas","Gotchas",[454,728,729],{},[457,730,731,732,734,735,738,739,741],{},"Since 0.5 every integration crate built on this one reports paths without a leading dot (",[344,733,465],{},", not ",[344,736,737],{},".user.email","). The HTTP adapters use ",[377,740,298],{"href":299}," instead.",[743,744,745],"style",{},"html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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);}",{"title":554,"searchDepth":587,"depth":594,"links":747},[748,749,750],{"id":451,"depth":587,"text":452},{"id":546,"depth":587,"text":547},{"id":725,"depth":587,"text":726},"Internal building blocks shared by the database, UI and CLI integration crates.","md",[754,759],{"label":755,"icon":756,"to":757,"target":758},"crates.io","i-simple-icons-rust","https:\u002F\u002Fcrates.io\u002Fcrates\u002Fvld-integration-common","_blank",{"label":760,"icon":307,"to":761,"target":758},"docs.rs","https:\u002F\u002Fdocs.rs\u002Fvld-integration-common",{},{"title":302,"description":751},"upjOdnY7IkjyywBWD401VqdFsfAuZ8NAgnBHWU84LgQ",[766,768],{"title":298,"path":299,"stem":300,"description":767,"children":-1},"Framework-independent HTTP helpers shared by all vld web adapters — value coercion, query\u002Fform\u002Fheader\u002Fcookie parsing, content-type checks and the error body.",{"title":312,"path":313,"stem":314,"description":769,"children":-1},"Every breaking change in vld 0.6 and 0.5, with before\u002Fafter code.",1794036363467]