[{"data":1,"prerenderedAt":1850},["ShallowReactive",2],{"navigation":3,"\u002Fschemas\u002Fstrings":335,"\u002Fschemas\u002Fstrings-surround":1845},[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":34,"body":337,"description":1839,"extension":1840,"links":1841,"meta":1842,"navigation":393,"path":35,"seo":1843,"stem":36,"__hash__":1844},"docs\u002F2.schemas\u002F1.strings.md",{"type":338,"value":339,"toc":1826},"minimark",[340,356,542,547,555,651,655,739,816,826,830,837,897,901,924,929,1055,1059,1310,1314,1392,1396,1405,1475,1479,1532,1541,1545,1771,1822],[341,342,343,347,348,351,352,355],"p",{},[344,345,346],"code",{},"vld::string()"," returns a ",[344,349,350],{},"ZString"," whose output is ",[344,353,354],{},"String",". Checks are chained and all of them run, so one parse can report several issues.",[357,358,363],"pre",{"className":359,"code":360,"language":361,"meta":362,"style":362},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use vld::prelude::*;\n\nlet username = vld::string()\n    .trim()\n    .to_lowercase()\n    .min(3)\n    .max(20)\n    .alphanumeric();\n\nassert_eq!(username.parse(r#\"\"  Ada42 \"\"#).unwrap(), \"ada42\");\n","rust","",[344,364,365,388,395,420,431,441,458,473,484,489],{"__ignoreMap":362},[366,367,370,374,378,382,385],"span",{"class":368,"line":369},"line",1,[366,371,373],{"class":372},"sbssI","use",[366,375,377],{"class":376},"sBMFI"," vld",[366,379,381],{"class":380},"sMK4o","::",[366,383,384],{"class":376},"prelude",[366,386,387],{"class":380},"::*;\n",[366,389,391],{"class":368,"line":390},2,[366,392,394],{"emptyLinePlaceholder":393},true,"\n",[366,396,398,402,406,409,411,413,417],{"class":368,"line":397},3,[366,399,401],{"class":400},"spNyl","let",[366,403,405],{"class":404},"sTEyZ"," username ",[366,407,408],{"class":380},"=",[366,410,377],{"class":376},[366,412,381],{"class":380},[366,414,416],{"class":415},"s2Zo4","string",[366,418,419],{"class":380},"()\n",[366,421,423,426,429],{"class":368,"line":422},4,[366,424,425],{"class":380},"    .",[366,427,428],{"class":415},"trim",[366,430,419],{"class":380},[366,432,434,436,439],{"class":368,"line":433},5,[366,435,425],{"class":380},[366,437,438],{"class":415},"to_lowercase",[366,440,419],{"class":380},[366,442,444,446,449,452,455],{"class":368,"line":443},6,[366,445,425],{"class":380},[366,447,448],{"class":415},"min",[366,450,451],{"class":380},"(",[366,453,454],{"class":372},"3",[366,456,457],{"class":380},")\n",[366,459,461,463,466,468,471],{"class":368,"line":460},7,[366,462,425],{"class":380},[366,464,465],{"class":415},"max",[366,467,451],{"class":380},[366,469,470],{"class":372},"20",[366,472,457],{"class":380},[366,474,476,478,481],{"class":368,"line":475},8,[366,477,425],{"class":380},[366,479,480],{"class":415},"alphanumeric",[366,482,483],{"class":380},"();\n",[366,485,487],{"class":368,"line":486},9,[366,488,394],{"emptyLinePlaceholder":393},[366,490,492,495,497,500,503,506,508,512,515,518,521,524,527,530,533,536,539],{"class":368,"line":491},10,[366,493,494],{"class":415},"assert_eq!",[366,496,451],{"class":380},[366,498,499],{"class":404},"username",[366,501,502],{"class":380},".",[366,504,505],{"class":415},"parse",[366,507,451],{"class":380},[366,509,511],{"class":510},"sfazB","r",[366,513,514],{"class":380},"#\"",[366,516,517],{"class":510},"\"  Ada42 \"",[366,519,520],{"class":380},"\"#",[366,522,523],{"class":380},").",[366,525,526],{"class":415},"unwrap",[366,528,529],{"class":380},"(),",[366,531,532],{"class":380}," \"",[366,534,535],{"class":510},"ada42",[366,537,538],{"class":380},"\"",[366,540,541],{"class":380},");\n",[543,544,546],"h2",{"id":545},"length","Length",[341,548,549,550,554],{},"Lengths count ",[551,552,553],"strong",{},"characters"," (Unicode scalar values), not bytes.",[556,557,558,574],"table",{},[559,560,561],"thead",{},[562,563,564,568,571],"tr",{},[565,566,567],"th",{},"Method",[565,569,570],{},"Check",[565,572,573],{},"Issue",[575,576,577,601,620,637],"tbody",{},[562,578,579,585,592],{},[580,581,582],"td",{},[344,583,584],{},"min(n)",[580,586,587,588,591],{},"at least ",[344,589,590],{},"n"," characters",[580,593,594,597,598,600],{},[344,595,596],{},"too_small"," (origin ",[344,599,416],{},")",[562,602,603,608,613],{},[580,604,605],{},[344,606,607],{},"max(n)",[580,609,610,611,591],{},"at most ",[344,612,590],{},[580,614,615,597,618,600],{},[344,616,617],{},"too_big",[344,619,416],{},[562,621,622,627,632],{},[580,623,624],{},[344,625,626],{},"len(n)",[580,628,629,630,591],{},"exactly ",[344,631,590],{},[580,633,634],{},[344,635,636],{},"invalid_length",[562,638,639,644,647],{},[580,640,641],{},[344,642,643],{},"non_empty()",[580,645,646],{},"at least one character",[580,648,649],{},[344,650,596],{},[543,652,654],{"id":653},"content","Content",[556,656,657,665],{},[559,658,659],{},[562,660,661,663],{},[565,662,567],{},[565,664,570],{},[575,666,667,677,687,697,726],{},[562,668,669,674],{},[580,670,671],{},[344,672,673],{},"starts_with(\"pre\")",[580,675,676],{},"prefix",[562,678,679,684],{},[580,680,681],{},[344,682,683],{},"ends_with(\"suf\")",[580,685,686],{},"suffix",[562,688,689,694],{},[580,690,691],{},[344,692,693],{},"contains(\"sub\")",[580,695,696],{},"substring",[562,698,699,704],{},[580,700,701],{},[344,702,703],{},"pattern(r\"...\")",[580,705,706,707,710,711,714,715,718,719],{},"regular expression (feature ",[344,708,709],{},"regex","); emitted as JSON Schema ",[344,712,713],{},"pattern",". Takes the source (panics on an invalid one, like ",[344,716,717],{},"Regex::new(..).unwrap()",") or a prebuilt ",[720,721,723],"a",{"href":722},"\u002Fschemas\u002Frules#patterns",[344,724,725],{},"vld::rules::Pattern",[562,727,728,733],{},[580,729,730],{},[344,731,732],{},"rule(r)",[580,734,735,736],{},"a reusable ",[720,737,738],{"href":39},"custom rule",[357,740,742],{"className":359,"code":741,"language":361,"meta":362,"style":362},"\u002F\u002F feature = \"regex\"\nlet sku = vld::string().pattern(r\"^[A-Z]{3}-\\d{4}$\");\nassert!(sku.parse(r#\"\"ABC-1234\"\"#).is_ok());\n",[344,743,744,750,783],{"__ignoreMap":362},[366,745,746],{"class":368,"line":369},[366,747,749],{"class":748},"sHwdD","\u002F\u002F feature = \"regex\"\n",[366,751,752,754,757,759,761,763,765,768,770,772,774,776,779,781],{"class":368,"line":390},[366,753,401],{"class":400},[366,755,756],{"class":404}," sku ",[366,758,408],{"class":380},[366,760,377],{"class":376},[366,762,381],{"class":380},[366,764,416],{"class":415},[366,766,767],{"class":380},"().",[366,769,713],{"class":415},[366,771,451],{"class":380},[366,773,511],{"class":510},[366,775,538],{"class":380},[366,777,778],{"class":510},"^[A-Z]{3}-\\d{4}$",[366,780,538],{"class":380},[366,782,541],{"class":380},[366,784,785,788,790,793,795,797,799,801,803,806,808,810,813],{"class":368,"line":397},[366,786,787],{"class":415},"assert!",[366,789,451],{"class":380},[366,791,792],{"class":404},"sku",[366,794,502],{"class":380},[366,796,505],{"class":415},[366,798,451],{"class":380},[366,800,511],{"class":510},[366,802,514],{"class":380},[366,804,805],{"class":510},"\"ABC-1234\"",[366,807,520],{"class":380},[366,809,523],{"class":380},[366,811,812],{"class":415},"is_ok",[366,814,815],{"class":380},"());\n",[341,817,818,819,821,822,825],{},"Most checks need no regex: every format below is a hand-written parser. Reach for ",[344,820,713],{}," only for shapes that are not built in, and prefer a ",[720,823,824],{"href":39},"rule"," when the check is easier to write in Rust.",[543,827,829],{"id":828},"transforms-and-coercion","Transforms and coercion",[341,831,832,833,836],{},"Transforms run ",[551,834,835],{},"before"," the checks, in the order they were added.",[556,838,839,848],{},[559,840,841],{},[562,842,843,845],{},[565,844,567],{},[565,846,847],{},"Effect",[575,849,850,860,870,880],{},[562,851,852,857],{},[580,853,854],{},[344,855,856],{},"trim()",[580,858,859],{},"strip leading and trailing whitespace",[562,861,862,867],{},[580,863,864],{},[344,865,866],{},"to_lowercase()",[580,868,869],{},"lowercase the input",[562,871,872,877],{},[580,873,874],{},[344,875,876],{},"to_uppercase()",[580,878,879],{},"uppercase the input",[562,881,882,887],{},[580,883,884],{},[344,885,886],{},"coerce()",[580,888,889,890,893,894,600],{},"accept numbers and booleans and turn them into text (",[344,891,892],{},"42"," → ",[344,895,896],{},"\"42\"",[543,898,900],{"id":899},"formats","Formats",[341,902,903,904,907,908,911,912,915,916,919,920,923],{},"Every format method has a ",[344,905,906],{},"_msg"," twin that takes a custom message (",[344,909,910],{},"email_msg(\"...\")","). A failed format check reports ",[344,913,914],{},"IssueCode::InvalidString { validation }",", key ",[344,917,918],{},"invalid_string",". Each format also sets the JSON Schema ",[344,921,922],{},"format"," keyword.",[925,926,928],"h3",{"id":927},"network","Network",[556,930,931,940],{},[559,932,933],{},[562,934,935,937],{},[565,936,567],{},[565,938,939],{},"Accepts",[575,941,942,952,969,987,999,1009,1022,1032,1045],{},[562,943,944,949],{},[580,945,946],{},[344,947,948],{},"email()",[580,950,951],{},"email address",[562,953,954,959],{},[580,955,956],{},[344,957,958],{},"url()",[580,960,961,964,965,968],{},[344,962,963],{},"http"," \u002F ",[344,966,967],{},"https"," URL",[562,970,971,976],{},[580,972,973],{},[344,974,975],{},"url_strict()",[580,977,978,979,964,981,983,984],{},"public ",[344,980,963],{},[344,982,967],{}," URL: real host, not localhost, private, loopback, link-local or unspecified addresses (IPv4-mapped IPv6 included). Feature ",[344,985,986],{},"string-advanced",[562,988,989,994],{},[580,990,991],{},[344,992,993],{},"uri()",[580,995,996,997,600],{},"any URI (feature ",[344,998,986],{},[562,1000,1001,1006],{},[580,1002,1003],{},[344,1004,1005],{},"ip()",[580,1007,1008],{},"IPv4 or IPv6 address",[562,1010,1011,1019],{},[580,1012,1013,964,1016],{},[344,1014,1015],{},"ipv4()",[344,1017,1018],{},"ipv6()",[580,1020,1021],{},"one address family (IPv6 accepts IPv4-mapped forms)",[562,1023,1024,1029],{},[580,1025,1026],{},[344,1027,1028],{},"cidr()",[580,1030,1031],{},"IPv4 \u002F IPv6 CIDR block with a decimal prefix",[562,1033,1034,1039],{},[580,1035,1036],{},[344,1037,1038],{},"mac()",[580,1040,1041,1042],{},"MAC address ",[344,1043,1044],{},"xx:xx:xx:xx:xx:xx",[562,1046,1047,1052],{},[580,1048,1049],{},[344,1050,1051],{},"hostname()",[580,1053,1054],{},"DNS hostname",[925,1056,1058],{"id":1057},"identifiers","Identifiers",[556,1060,1061,1069],{},[559,1062,1063],{},[562,1064,1065,1067],{},[565,1066,567],{},[565,1068,939],{},[575,1070,1071,1081,1099,1109,1119,1136,1149,1166,1182,1196,1206,1220,1236,1246,1256,1279,1289],{},[562,1072,1073,1078],{},[580,1074,1075],{},[344,1076,1077],{},"uuid()",[580,1079,1080],{},"any UUID",[562,1082,1083,1094],{},[580,1084,1085,964,1088,964,1091],{},[344,1086,1087],{},"uuid_v1()",[344,1089,1090],{},"uuid_v4()",[344,1092,1093],{},"uuid_v7()",[580,1095,1096,1097,600],{},"a specific UUID version (feature ",[344,1098,986],{},[562,1100,1101,1106],{},[580,1102,1103],{},[344,1104,1105],{},"cuid2()",[580,1107,1108],{},"CUID2: 2–32 lowercase alphanumerics starting with a letter",[562,1110,1111,1116],{},[580,1112,1113],{},[344,1114,1115],{},"ulid()",[580,1117,1118],{},"26-character Crockford Base32 ULID",[562,1120,1121,1126],{},[580,1122,1123],{},[344,1124,1125],{},"nanoid()",[580,1127,1128,1129,1132,1133,600],{},"Nano ID alphabet (alphanumerics, ",[344,1130,1131],{},"_",", ",[344,1134,1135],{},"-",[562,1137,1138,1143],{},[580,1139,1140],{},[344,1141,1142],{},"slug()",[580,1144,1145,1146],{},"URL slug ",[344,1147,1148],{},"[a-z0-9-]",[562,1150,1151,1156],{},[580,1152,1153],{},[344,1154,1155],{},"semver()",[580,1157,1158,1161,1162,1165],{},[344,1159,1160],{},"MAJOR.MINOR.PATCH"," with an optional ",[344,1163,1164],{},"v"," prefix",[562,1167,1168,1173],{},[580,1169,1170],{},[344,1171,1172],{},"semver_full()",[580,1174,1175,1176,1179,1180,600],{},"full semantic version parsed by the ",[344,1177,1178],{},"semver"," crate (feature ",[344,1181,986],{},[562,1183,1184,1189],{},[580,1185,1186],{},[344,1187,1188],{},"jwt()",[580,1190,1191,1192,1195],{},"JWT-shaped token ",[344,1193,1194],{},"header.payload.signature"," (base64url parts; the signature is not verified)",[562,1197,1198,1203],{},[580,1199,1200],{},[344,1201,1202],{},"credit_card()",[580,1204,1205],{},"12–19 digits with optional spaces or dashes, Luhn-checked",[562,1207,1208,1213],{},[580,1209,1210],{},[344,1211,1212],{},"phone()",[580,1214,1215,1216,1219],{},"international phone: leading ",[344,1217,1218],{},"+",", 8–15 digits, optional spaces, dashes, parentheses",[562,1221,1222,1227],{},[580,1223,1224],{},[344,1225,1226],{},"phone_e164_strict()",[580,1228,1229,1230,1233,1234,600],{},"strict E.164, checked with ",[344,1231,1232],{},"phonenumber"," (feature ",[344,1235,986],{},[562,1237,1238,1243],{},[580,1239,1240],{},[344,1241,1242],{},"currency_code()",[580,1244,1245],{},"three uppercase letters (ISO 4217 shape)",[562,1247,1248,1253],{},[580,1249,1250],{},[344,1251,1252],{},"country_code()",[580,1254,1255],{},"ISO 3166 alpha-2",[562,1257,1258,1263],{},[580,1259,1260],{},[344,1261,1262],{},"locale()",[580,1264,1265,1268,1269,1272,1273,1132,1276,600],{},[344,1266,1267],{},"ll"," or ",[344,1270,1271],{},"ll-RR"," (",[344,1274,1275],{},"en",[344,1277,1278],{},"en-US",[562,1280,1281,1286],{},[580,1282,1283],{},[344,1284,1285],{},"cron()",[580,1287,1288],{},"cron expression with 5 or 6 fields",[562,1290,1291,1296],{},[580,1292,1293],{},[344,1294,1295],{},"color()",[580,1297,1298,1132,1301,1132,1304,1132,1307],{},[344,1299,1300],{},"#RRGGBB",[344,1302,1303],{},"#RRGGBBAA",[344,1305,1306],{},"rgb(...)",[344,1308,1309],{},"hsl(...)",[925,1311,1313],{"id":1312},"text","Text",[556,1315,1316,1324],{},[559,1317,1318],{},[562,1319,1320,1322],{},[565,1321,567],{},[565,1323,939],{},[575,1325,1326,1336,1346,1356,1372,1382],{},[562,1327,1328,1333],{},[580,1329,1330],{},[344,1331,1332],{},"ascii()",[580,1334,1335],{},"ASCII only",[562,1337,1338,1343],{},[580,1339,1340],{},[344,1341,1342],{},"alpha()",[580,1344,1345],{},"ASCII letters only",[562,1347,1348,1353],{},[580,1349,1350],{},[344,1351,1352],{},"alphanumeric()",[580,1354,1355],{},"ASCII letters and digits",[562,1357,1358,1366],{},[580,1359,1360,964,1363],{},[344,1361,1362],{},"lowercase()",[344,1364,1365],{},"uppercase()",[580,1367,1368,1369,1371],{},"already lower \u002F upper case (use ",[344,1370,866],{}," to convert instead)",[562,1373,1374,1379],{},[580,1375,1376],{},[344,1377,1378],{},"emoji()",[580,1380,1381],{},"non-empty, emoji only",[562,1383,1384,1389],{},[580,1385,1386],{},[344,1387,1388],{},"json()",[580,1390,1391],{},"a string that contains exactly one JSON document",[925,1393,1395],{"id":1394},"dates-and-times-as-strings","Dates and times as strings",[341,1397,1398,1399,1401,1402,502],{},"These keep the value a ",[344,1400,354],{},". To get typed dates, use the ",[720,1403,1404],{"href":51},"date schemas",[556,1406,1407,1415],{},[559,1408,1409],{},[562,1410,1411,1413],{},[565,1412,567],{},[565,1414,939],{},[575,1416,1417,1430,1463],{},[562,1418,1419,1424],{},[580,1420,1421],{},[344,1422,1423],{},"iso_date()",[580,1425,1426,1429],{},[344,1427,1428],{},"YYYY-MM-DD"," with a real day of month",[562,1431,1432,1437],{},[580,1433,1434],{},[344,1435,1436],{},"iso_datetime()",[580,1438,1439,1442,1443,1268,1446,1449,1450,964,1453,964,1456,1459,1460],{},[344,1440,1441],{},"YYYY-MM-DDTHH:MM:SS[.frac]"," (seconds required, ",[344,1444,1445],{},"T",[344,1447,1448],{},"t","), optional ",[344,1451,1452],{},"Z",[344,1454,1455],{},"z",[344,1457,1458],{},"±HH:MM","; the same grammar as ",[344,1461,1462],{},"vld::chrono::datetime()",[562,1464,1465,1470],{},[580,1466,1467],{},[344,1468,1469],{},"iso_time()",[580,1471,1472],{},[344,1473,1474],{},"HH:MM[:SS[.frac]]",[925,1476,1478],{"id":1477},"encodings","Encodings",[556,1480,1481,1489],{},[559,1482,1483],{},[562,1484,1485,1487],{},[565,1486,567],{},[565,1488,939],{},[575,1490,1491,1501,1522],{},[562,1492,1493,1498],{},[580,1494,1495],{},[344,1496,1497],{},"base64()",[580,1499,1500],{},"standard Base64 with padding",[562,1502,1503,1508],{},[580,1504,1505],{},[344,1506,1507],{},"base64url()",[580,1509,1510,1511,1132,1513,1515,1516,1518,1519],{},"URL-safe alphabet (",[344,1512,1135],{},[344,1514,1131],{},"), padding optional; rejects ",[344,1517,1218],{}," and ",[344,1520,1521],{},"\u002F",[562,1523,1524,1529],{},[580,1525,1526],{},[344,1527,1528],{},"hex()",[580,1530,1531],{},"hexadecimal characters only",[341,1533,1534,1535,502],{},"To decode into bytes instead of keeping text, use ",[720,1536,1538],{"href":1537},"\u002Fschemas\u002Fspecial-types#bytes",[344,1539,1540],{},"vld::bytes().base64()",[543,1542,1544],{"id":1543},"messages","Messages",[357,1546,1548],{"className":359,"code":1547,"language":361,"meta":362,"style":362},"let name = vld::string()\n    .type_error(\"Name must be text\")\n    .min_msg(2, \"Name is too short\")\n    .email_msg(\"Please enter a valid email\");\n\n\u002F\u002F Or override many checks by key at once:\nlet code = vld::string().min(3).max(8).with_messages(|key| match key {\n    \"too_small\" => Some(\"Too short\".into()),\n    \"too_big\" => Some(\"Too long\".into()),\n    _ => None,\n});\n",[344,1549,1550,1567,1585,1609,1627,1631,1636,1692,1724,1751,1765],{"__ignoreMap":362},[366,1551,1552,1554,1557,1559,1561,1563,1565],{"class":368,"line":369},[366,1553,401],{"class":400},[366,1555,1556],{"class":404}," name ",[366,1558,408],{"class":380},[366,1560,377],{"class":376},[366,1562,381],{"class":380},[366,1564,416],{"class":415},[366,1566,419],{"class":380},[366,1568,1569,1571,1574,1576,1578,1581,1583],{"class":368,"line":390},[366,1570,425],{"class":380},[366,1572,1573],{"class":415},"type_error",[366,1575,451],{"class":380},[366,1577,538],{"class":380},[366,1579,1580],{"class":510},"Name must be text",[366,1582,538],{"class":380},[366,1584,457],{"class":380},[366,1586,1587,1589,1592,1594,1597,1600,1602,1605,1607],{"class":368,"line":397},[366,1588,425],{"class":380},[366,1590,1591],{"class":415},"min_msg",[366,1593,451],{"class":380},[366,1595,1596],{"class":372},"2",[366,1598,1599],{"class":380},",",[366,1601,532],{"class":380},[366,1603,1604],{"class":510},"Name is too short",[366,1606,538],{"class":380},[366,1608,457],{"class":380},[366,1610,1611,1613,1616,1618,1620,1623,1625],{"class":368,"line":422},[366,1612,425],{"class":380},[366,1614,1615],{"class":415},"email_msg",[366,1617,451],{"class":380},[366,1619,538],{"class":380},[366,1621,1622],{"class":510},"Please enter a valid email",[366,1624,538],{"class":380},[366,1626,541],{"class":380},[366,1628,1629],{"class":368,"line":433},[366,1630,394],{"emptyLinePlaceholder":393},[366,1632,1633],{"class":368,"line":443},[366,1634,1635],{"class":748},"\u002F\u002F Or override many checks by key at once:\n",[366,1637,1638,1640,1643,1645,1647,1649,1651,1653,1655,1657,1659,1661,1663,1665,1668,1670,1673,1676,1679,1682,1686,1689],{"class":368,"line":460},[366,1639,401],{"class":400},[366,1641,1642],{"class":404}," code ",[366,1644,408],{"class":380},[366,1646,377],{"class":376},[366,1648,381],{"class":380},[366,1650,416],{"class":415},[366,1652,767],{"class":380},[366,1654,448],{"class":415},[366,1656,451],{"class":380},[366,1658,454],{"class":372},[366,1660,523],{"class":380},[366,1662,465],{"class":415},[366,1664,451],{"class":380},[366,1666,1667],{"class":372},"8",[366,1669,523],{"class":380},[366,1671,1672],{"class":415},"with_messages",[366,1674,1675],{"class":380},"(|",[366,1677,1678],{"class":404},"key",[366,1680,1681],{"class":380},"|",[366,1683,1685],{"class":1684},"s7zQu"," match",[366,1687,1688],{"class":404}," key ",[366,1690,1691],{"class":380},"{\n",[366,1693,1694,1697,1699,1701,1704,1707,1709,1711,1714,1716,1718,1721],{"class":368,"line":475},[366,1695,1696],{"class":380},"    \"",[366,1698,596],{"class":510},[366,1700,538],{"class":380},[366,1702,1703],{"class":380}," =>",[366,1705,1706],{"class":376}," Some",[366,1708,451],{"class":380},[366,1710,538],{"class":380},[366,1712,1713],{"class":510},"Too short",[366,1715,538],{"class":380},[366,1717,502],{"class":380},[366,1719,1720],{"class":415},"into",[366,1722,1723],{"class":380},"()),\n",[366,1725,1726,1728,1730,1732,1734,1736,1738,1740,1743,1745,1747,1749],{"class":368,"line":486},[366,1727,1696],{"class":380},[366,1729,617],{"class":510},[366,1731,538],{"class":380},[366,1733,1703],{"class":380},[366,1735,1706],{"class":376},[366,1737,451],{"class":380},[366,1739,538],{"class":380},[366,1741,1742],{"class":510},"Too long",[366,1744,538],{"class":380},[366,1746,502],{"class":380},[366,1748,1720],{"class":415},[366,1750,1723],{"class":380},[366,1752,1753,1756,1759,1762],{"class":368,"line":491},[366,1754,1755],{"class":404},"    _ ",[366,1757,1758],{"class":380},"=>",[366,1760,1761],{"class":376}," None",[366,1763,1764],{"class":380},",\n",[366,1766,1768],{"class":368,"line":1767},11,[366,1769,1770],{"class":380},"});\n",[341,1772,1773,1775,1776,1132,1778,1132,1780,1132,1782,1132,1785,1788,1789,1791,1792,1132,1795,1132,1798,1518,1801,1272,1804,1132,1807,1132,1810,1813,1814,1816,1817,1819,1820,502],{},[344,1774,1672],{}," keys are ",[344,1777,596],{},[344,1779,617],{},[344,1781,636],{},[344,1783,1784],{},"non_empty",[344,1786,1787],{},"invalid_regex"," (for ",[344,1790,713],{},"), a rule's key, ",[344,1793,1794],{},"invalid_starts_with",[344,1796,1797],{},"invalid_ends_with",[344,1799,1800],{},"invalid_contains",[344,1802,1803],{},"invalid_\u003Cformat>",[344,1805,1806],{},"invalid_email",[344,1808,1809],{},"invalid_url",[344,1811,1812],{},"invalid_uuid",", …). A ",[344,1815,906],{}," message wins over ",[344,1818,1672],{},". More in ",[720,1821,114],{"href":115},[1823,1824,1825],"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);}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":362,"searchDepth":390,"depth":397,"links":1827},[1828,1829,1830,1831,1838],{"id":545,"depth":390,"text":546},{"id":653,"depth":390,"text":654},{"id":828,"depth":390,"text":829},{"id":899,"depth":390,"text":900,"children":1832},[1833,1834,1835,1836,1837],{"id":927,"depth":397,"text":928},{"id":1057,"depth":397,"text":1058},{"id":1312,"depth":397,"text":1313},{"id":1394,"depth":397,"text":1395},{"id":1477,"depth":397,"text":1478},{"id":1543,"depth":390,"text":1544},"vld::string() — length, patterns, transforms, coercion and more than 40 built-in formats.","md",null,{},{"title":34,"description":1839},"Y5Lhq7qp_fS_SRxpVyaxvcu32FrcE73e3GHdfKNGMn4",[1846,1848],{"title":23,"path":24,"stem":25,"description":1847,"children":-1},"Minimum supported Rust version of every crate and feature.",{"title":38,"path":39,"stem":40,"description":1849,"children":-1},"Reusable named checks (the Rule trait), closure rules, messages and translations by key, JSON Schema keywords, and patterns.",1794036356982]