[{"data":1,"prerenderedAt":819},["ShallowReactive",2],{"navigation":3,"\u002Fguides\u002Ffaq":335,"\u002Fguides\u002Ffaq-surround":814},[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":328,"body":337,"description":807,"extension":808,"links":809,"meta":810,"navigation":811,"path":329,"seo":812,"stem":330,"__hash__":813},"docs\u002F7.guides\u002F5.faq.md",{"type":338,"value":339,"toc":790},"minimark",[340,350,383,387,410,414,426,430,448,555,574,578,601,605,623,627,644,648,661,665,690,694,707,711,735,739,758,762,769,773,786],[341,342,344,345,349],"h2",{"id":343},"schema-or-derivevalidate","schema! or #",[346,347,348],"span",{},"derive(Validate)","?",[351,352,353,354,358,359,362,363,366,367,370,371,374,375,378,379,382],"p",{},"Both generate the same API. ",[355,356,357],"code",{},"schema!"," needs no proc-macro and keeps the schema next to the type in one line per field. The derive (feature ",[355,360,361],{},"derive",") fits structs that already carry other derives and attributes, supports ",[355,364,365],{},"#[serde(skip)]"," \u002F ",[355,368,369],{},"default",", and generic structs. The derive's parse method is ",[355,372,373],{},"vld_parse()"," (not ",[355,376,377],{},"parse()",") to avoid clashing with ",[355,380,381],{},"clap::Parser::parse",".",[341,384,386],{"id":385},"why-is-vlddate-missing","Why is vld::date() missing?",[351,388,389,390,393,394,393,397,400,401,404,405,382],{},"It exists only when exactly one of the ",[355,391,392],{},"chrono",", ",[355,395,396],{},"jiff",[355,398,399],{},"time"," features is enabled. Another crate in your tree may have enabled a second backend. Use ",[355,402,403],{},"vld::chrono::date()"," (or the backend you use). See ",[406,407,409],"a",{"href":408},"\u002Fschemas\u002Fdates#shortcuts-with-one-backend","Dates",[341,411,413],{"id":412},"why-does-my-runtime-limit-not-change","Why does my runtime limit not change?",[351,415,416,417,419,420,423,424,382],{},"Field schemas in ",[355,418,357],{}," \u002F derive structs are built once per process. A value read from configuration is frozen at the first parse. Build such schemas at runtime with ",[355,421,422],{},"vld::object()",". See ",[406,425,320],{"href":321},[341,427,429],{"id":428},"how-do-i-return-a-schema-from-a-function","How do I return a schema from a function?",[351,431,432,433,436,437,440,441,444,445,447],{},"Return ",[355,434,435],{},"impl vld::Schema\u003COutput = T>",". A plain ",[355,438,439],{},"impl VldSchema"," hides the JSON Schema traits, so with the ",[355,442,443],{},"openapi"," feature the result cannot be used as an object or ",[355,446,357],{}," field:",[449,450,455],"pre",{"className":451,"code":452,"language":453,"meta":454,"style":454},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","fn username() -> impl vld::Schema\u003COutput = String> {\n    vld::string().min(3).max(20).alphanumeric()\n}\n","rust","",[355,456,457,507,549],{"__ignoreMap":454},[346,458,461,465,469,473,476,479,483,486,489,492,495,498,501,504],{"class":459,"line":460},"line",1,[346,462,464],{"class":463},"sbssI","fn",[346,466,468],{"class":467},"s2Zo4"," username",[346,470,472],{"class":471},"sMK4o","()",[346,474,475],{"class":471}," ->",[346,477,478],{"class":463}," impl",[346,480,482],{"class":481},"sBMFI"," vld",[346,484,485],{"class":471},"::",[346,487,488],{"class":481},"Schema",[346,490,491],{"class":471},"\u003C",[346,493,494],{"class":481},"Output",[346,496,497],{"class":471}," =",[346,499,500],{"class":481}," String",[346,502,503],{"class":471},">",[346,505,506],{"class":471}," {\n",[346,508,510,513,515,518,521,524,527,530,533,536,538,541,543,546],{"class":459,"line":509},2,[346,511,512],{"class":481},"    vld",[346,514,485],{"class":471},[346,516,517],{"class":467},"string",[346,519,520],{"class":471},"().",[346,522,523],{"class":467},"min",[346,525,526],{"class":471},"(",[346,528,529],{"class":463},"3",[346,531,532],{"class":471},").",[346,534,535],{"class":467},"max",[346,537,526],{"class":471},[346,539,540],{"class":463},"20",[346,542,532],{"class":471},[346,544,545],{"class":467},"alphanumeric",[346,547,548],{"class":471},"()\n",[346,550,552],{"class":459,"line":551},3,[346,553,554],{"class":471},"}\n",[351,556,557,560,561,564,565,393,567,570,571,382],{},[355,558,559],{},"vld::Schema"," is ",[355,562,563],{},"VldSchema"," plus, with ",[355,566,443],{},[355,568,569],{},"JsonSchema"," and ",[355,572,573],{},"CollectNestedSchemas",[341,575,577],{"id":576},"tvld_parse_value-is-not-found","T::vld_parse_value is not found",[351,579,580,570,582,584,585,588,589,592,593,596,597,600],{},[355,581,84],{},[355,583,357],{}," types have an inherent ",[355,586,587],{},"vld_parse_value"," (and ",[355,590,591],{},"parse_value","), so ",[355,594,595],{},"MyType::vld_parse_value"," works without importing anything. For a generic ",[355,598,599],{},"T: VldParse"," it comes from the bound.",[341,602,604],{"id":603},"the-compiler-says-my-schema-is-not-send-sync-static","The compiler says my schema is not Send \u002F Sync \u002F 'static",[351,606,607,608,611,612,393,615,618,619,622],{},"Same cause: cached field schemas live in a ",[355,609,610],{},"static",". Closures in ",[355,613,614],{},"refine",[355,616,617],{},"transform"," or ",[355,620,621],{},"custom"," must not capture references to local data; move owned data in or use constants.",[341,624,626],{"id":625},"how-do-i-accept-42-for-a-number-field-in-json","How do I accept \"42\" for a number field in JSON?",[351,628,629,630,633,634,393,637,393,640,643],{},"Use ",[355,631,632],{},".coerce()",": ",[355,635,636],{},"vld::number().coerce()",[355,638,639],{},"vld::u32().coerce()",[355,641,642],{},"vld::boolean().coerce()",". Web query, path, form, header and cookie values are coerced automatically.",[341,645,647],{"id":646},"how-do-i-reject-unknown-fields","How do I reject unknown fields?",[351,649,650,653,654,657,658,660],{},[355,651,652],{},"vld::object().strict()"," rejects them with ",[355,655,656],{},"unrecognized_field",". ",[355,659,357],{}," and derive structs ignore unknown keys.",[341,662,664],{"id":663},"why-does-a-missing-field-say-required-field-is-missing-but-null-says-expected-string-received-null","Why does a missing field say \"Required field is missing\" but null says \"Expected string, received null\"?",[351,666,667,668,671,672,675,676,679,680,393,683,618,686,689],{},"Since 0.5 an absent key reports ",[355,669,670],{},"missing_field"," and a present ",[355,673,674],{},"null"," reports ",[355,677,678],{},"invalid_type",", so clients can tell the two apart. Make the field ",[355,681,682],{},".optional()",[355,684,685],{},".nullable()",[355,687,688],{},".with_default(..)"," to accept both.",[341,691,693],{"id":692},"how-do-i-get-the-error-code-in-my-frontend","How do I get the error code in my frontend?",[351,695,696,697,699,700,703,704,382],{},"The web adapters include ",[355,698,355],{}," (the stable ",[355,701,702],{},"IssueCode::key()",") in every issue of the 422 body. In Rust, call ",[355,705,706],{},"issue.code.key()",[341,708,710],{"id":709},"can-i-validate-a-struct-i-already-have","Can I validate a struct I already have?",[351,712,713,714,717,718,720,721,724,725,728,729,732,733,382],{},"Yes: ",[355,715,716],{},"User::validate(&user)"," for ",[355,719,357],{}," \u002F derive types (the value must implement ",[355,722,723],{},"Serialize","), ",[355,726,727],{},"impl_rules!"," for any struct, or ",[355,730,731],{},"schema.validate(&value)"," for a single schema. See ",[406,734,88],{"href":89},[341,736,738],{"id":737},"does-vld-work-in-webassembly","Does vld work in WebAssembly?",[351,740,741,742,393,744,746,747,750,751,393,754,757],{},"The core has no platform-specific code; the UI integrations (",[355,743,284],{},[355,745,280],{},") are built for ",[355,748,749],{},"wasm32"," in CI. Features that touch the filesystem (",[355,752,753],{},"path().exists()",[355,755,756],{},"file()",") are not meaningful in a browser.",[341,759,761],{"id":760},"is-there-a-typescript-version-of-my-schemas","Is there a TypeScript version of my schemas?",[351,763,764,768],{},[406,765,766],{"href":217},[355,767,216],{}," generates Zod or Valibot code from vld schemas, so client and server validate the same rules.",[341,770,772],{"id":771},"where-are-the-api-docs","Where are the API docs?",[351,774,775,776,782,783,382],{},"On ",[406,777,781],{"href":778,"rel":779},"https:\u002F\u002Fdocs.rs\u002Fvld",[780],"nofollow","docs.rs\u002Fvld",". Each integration crate links its own docs.rs page from its ",[406,784,785],{"href":149},"integration page",[787,788,789],"style",{},"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 .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 .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":454,"searchDepth":509,"depth":551,"links":791},[792,794,795,796,797,798,799,800,801,802,803,804,805,806],{"id":343,"depth":509,"text":793},"schema! or #derive(Validate)?",{"id":385,"depth":509,"text":386},{"id":412,"depth":509,"text":413},{"id":428,"depth":509,"text":429},{"id":576,"depth":509,"text":577},{"id":603,"depth":509,"text":604},{"id":625,"depth":509,"text":626},{"id":646,"depth":509,"text":647},{"id":663,"depth":509,"text":664},{"id":692,"depth":509,"text":693},{"id":709,"depth":509,"text":710},{"id":737,"depth":509,"text":738},{"id":760,"depth":509,"text":761},{"id":771,"depth":509,"text":772},"Short answers to common questions.","md",null,{},true,{"title":328,"description":807},"Vo8wEI0Otod7uZzbc1uAKTgQlILK__-4ByBbj_gk-7k",[815,817],{"title":324,"path":325,"stem":326,"description":816,"children":-1},"Repository layout, running CI locally, keeping target\u002F small, snapshots and fuzzing.",{"title":332,"path":333,"stem":334,"description":818,"children":-1},"All notable changes to vld and its integration crates.",1794036360643]