[{"data":1,"prerenderedAt":1482},["ShallowReactive",2],{"navigation":3,"\u002Fintegrations\u002Fmessaging\u002Flapin":335,"\u002Fintegrations\u002Fmessaging\u002Flapin-surround":1477},[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":256,"body":337,"description":1463,"extension":1464,"links":1465,"meta":1474,"navigation":619,"path":257,"seo":1475,"stem":258,"__hash__":1476},"docs\u002F6.integrations\u002F5.messaging\u002F2.lapin.md",{"type":338,"value":339,"toc":1456},"minimark",[340,355,360,440,450,454,514,517,576,586,590,1283,1287,1400,1404,1452],[341,342,343,346,347,350,351,354],"p",{},[344,345,256],"code",{}," wraps a ",[344,348,349],{},"lapin::Channel",". ",[344,352,353],{},"publish"," validates a value and sends it as JSON; the decode helpers parse and validate deliveries and can settle invalid (\"poison\") messages for you.",[356,357,359],"h2",{"id":358},"install","Install",[361,362,368],"pre",{"className":363,"code":364,"filename":365,"language":366,"meta":367,"style":367},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[dependencies]\nvld = \"0.5\"\nvld-lapin = \"0.5\"  # lapin 2 by default\nlapin = \"2\"\n","Cargo.toml","toml","",[344,369,370,386,406,425],{"__ignoreMap":367},[371,372,375,379,383],"span",{"class":373,"line":374},"line",1,[371,376,378],{"class":377},"sMK4o","[",[371,380,382],{"class":381},"sBMFI","dependencies",[371,384,385],{"class":377},"]\n",[371,387,389,393,396,399,403],{"class":373,"line":388},2,[371,390,392],{"class":391},"sTEyZ","vld ",[371,394,395],{"class":377},"=",[371,397,398],{"class":377}," \"",[371,400,402],{"class":401},"sfazB","0.5",[371,404,405],{"class":377},"\"\n",[371,407,409,412,414,416,418,421],{"class":373,"line":408},3,[371,410,411],{"class":391},"vld-lapin ",[371,413,395],{"class":377},[371,415,398],{"class":377},[371,417,402],{"class":401},[371,419,420],{"class":377},"\"",[371,422,424],{"class":423},"sHwdD","  # lapin 2 by default\n",[371,426,428,431,433,435,438],{"class":373,"line":427},4,[371,429,430],{"class":391},"lapin ",[371,432,395],{"class":377},[371,434,398],{"class":377},[371,436,437],{"class":401},"2",[371,439,405],{"class":377},[341,441,442,443,446,447,449],{},"Your ",[344,444,445],{},"lapin"," dependency must be the same major as the ",[344,448,256],{}," feature.",[356,451,453],{"id":452},"features","Features",[455,456,457,473],"table",{},[458,459,460],"thead",{},[461,462,463,467,470],"tr",{},[464,465,466],"th",{},"Feature",[464,468,469],{},"Default",[464,471,472],{},"Effect",[474,475,476,490,502],"tbody",{},[461,477,478,484,487],{},[479,480,481],"td",{},[344,482,483],{},"lapin-2",[479,485,486],{},"yes",[479,488,489],{},"lapin 2.x",[461,491,492,497,499],{},[479,493,494],{},[344,495,496],{},"lapin-3",[479,498],{},[479,500,501],{},"lapin 3.x",[461,503,504,509,511],{},[479,505,506],{},[344,507,508],{},"lapin-4",[479,510],{},[479,512,513],{},"lapin 4.10+ (Rust 1.88+)",[341,515,516],{},"Exactly one must be enabled:",[361,518,520],{"className":363,"code":519,"language":366,"meta":367,"style":367},"vld-lapin = { version = \"0.5\", default-features = false, features = [\"lapin-3\"] }\n",[344,521,522],{"__ignoreMap":367},[371,523,524,526,528,531,534,536,538,540,542,545,548,550,554,556,559,561,564,566,568,570,573],{"class":373,"line":374},[371,525,411],{"class":391},[371,527,395],{"class":377},[371,529,530],{"class":377}," {",[371,532,533],{"class":391}," version ",[371,535,395],{"class":377},[371,537,398],{"class":377},[371,539,402],{"class":401},[371,541,420],{"class":377},[371,543,544],{"class":377},",",[371,546,547],{"class":391}," default-features ",[371,549,395],{"class":377},[371,551,553],{"class":552},"sfNiH"," false",[371,555,544],{"class":377},[371,557,558],{"class":391}," features ",[371,560,395],{"class":377},[371,562,563],{"class":377}," [",[371,565,420],{"class":377},[371,567,496],{"class":401},[371,569,420],{"class":377},[371,571,572],{"class":377},"]",[371,574,575],{"class":377}," }\n",[341,577,578,579,581,582,585],{},"MSRV: 1.85, 1.88 with ",[344,580,508],{}," (see ",[583,584,23],"a",{"href":24},").",[356,587,589],{"id":588},"example","Example",[361,591,595],{"className":592,"code":593,"language":594,"meta":367,"style":367},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use vld_lapin::prelude::*;\n\nvld::schema! {\n    #[derive(Debug, serde::Serialize)]\n    pub struct EventSchema {\n        pub event: String => vld::string().min(1),\n        pub retries: i64 => vld::number().int().min(0).max(10),\n    }\n}\n\nasync fn run() -> Result\u003C(), Box\u003Cdyn std::error::Error>> {\n    let conn = lapin::Connection::connect(\n        \"amqp:\u002F\u002Fguest:guest@127.0.0.1:5672\u002F%2f\",\n        lapin::ConnectionProperties::default(),\n    )\n    .await?;\n    let channel = LapinChannel::new(conn.create_channel().await?);\n\n    channel\n        .queue_declare(\"events\", Default::default(), Default::default())\n        .await?;\n\n    let event = EventSchema { event: \"user.created\".into(), retries: 0 };\n    channel\n        .publish(\"\", \"events\", Default::default(), Default::default(), &event)\n        .await?;\n\n    if let Some(message) = channel.basic_get(\"events\", Default::default()).await? {\n        \u002F\u002F Ack when valid, nack when invalid: every message is settled.\n        let parsed: EventSchema = channel\n            .ack_or_nack_decode(&message, Default::default(), Default::default())\n            .await?;\n        println!(\"{}\", parsed.event);\n    }\n    Ok(())\n}\n","rust",[344,596,597,615,621,635,662,677,717,765,771,777,782,833,860,874,893,899,912,948,953,959,998,1007,1012,1054,1059,1106,1115,1120,1177,1183,1201,1233,1242,1264,1269,1278],{"__ignoreMap":367},[371,598,599,603,606,609,612],{"class":373,"line":374},[371,600,602],{"class":601},"sbssI","use",[371,604,605],{"class":381}," vld_lapin",[371,607,608],{"class":377},"::",[371,610,611],{"class":381},"prelude",[371,613,614],{"class":377},"::*;\n",[371,616,617],{"class":373,"line":388},[371,618,620],{"emptyLinePlaceholder":619},true,"\n",[371,622,623,626,628,632],{"class":373,"line":408},[371,624,625],{"class":381},"vld",[371,627,608],{"class":377},[371,629,631],{"class":630},"s2Zo4","schema!",[371,633,634],{"class":377}," {\n",[371,636,637,640,643,646,649,651,654,656,659],{"class":373,"line":427},[371,638,639],{"class":377},"    #[",[371,641,642],{"class":391},"derive",[371,644,645],{"class":377},"(",[371,647,648],{"class":381},"Debug",[371,650,544],{"class":377},[371,652,653],{"class":391}," serde",[371,655,608],{"class":377},[371,657,658],{"class":381},"Serialize",[371,660,661],{"class":377},")]\n",[371,663,665,669,672,675],{"class":373,"line":664},5,[371,666,668],{"class":667},"spNyl","    pub",[371,670,671],{"class":667}," struct",[371,673,674],{"class":381}," EventSchema",[371,676,634],{"class":377},[371,678,680,683,686,689,692,695,698,700,703,706,709,711,714],{"class":373,"line":679},6,[371,681,682],{"class":667},"        pub",[371,684,685],{"class":391}," event",[371,687,688],{"class":377},":",[371,690,691],{"class":381}," String",[371,693,694],{"class":377}," =>",[371,696,697],{"class":381}," vld",[371,699,608],{"class":377},[371,701,702],{"class":630},"string",[371,704,705],{"class":377},"().",[371,707,708],{"class":630},"min",[371,710,645],{"class":377},[371,712,713],{"class":601},"1",[371,715,716],{"class":377},"),\n",[371,718,720,722,725,727,730,732,734,736,739,741,744,746,748,750,753,755,758,760,763],{"class":373,"line":719},7,[371,721,682],{"class":667},[371,723,724],{"class":391}," retries",[371,726,688],{"class":377},[371,728,729],{"class":381}," i64",[371,731,694],{"class":377},[371,733,697],{"class":381},[371,735,608],{"class":377},[371,737,738],{"class":630},"number",[371,740,705],{"class":377},[371,742,743],{"class":630},"int",[371,745,705],{"class":377},[371,747,708],{"class":630},[371,749,645],{"class":377},[371,751,752],{"class":601},"0",[371,754,585],{"class":377},[371,756,757],{"class":630},"max",[371,759,645],{"class":377},[371,761,762],{"class":601},"10",[371,764,716],{"class":377},[371,766,768],{"class":373,"line":767},8,[371,769,770],{"class":377},"    }\n",[371,772,774],{"class":373,"line":773},9,[371,775,776],{"class":377},"}\n",[371,778,780],{"class":373,"line":779},10,[371,781,620],{"emptyLinePlaceholder":619},[371,783,785,788,791,794,797,800,803,806,809,812,815,818,820,823,825,828,831],{"class":373,"line":784},11,[371,786,787],{"class":601},"async",[371,789,790],{"class":601}," fn",[371,792,793],{"class":630}," run",[371,795,796],{"class":377},"()",[371,798,799],{"class":377}," ->",[371,801,802],{"class":381}," Result",[371,804,805],{"class":377},"\u003C(),",[371,807,808],{"class":381}," Box",[371,810,811],{"class":377},"\u003C",[371,813,814],{"class":601},"dyn",[371,816,817],{"class":391}," std",[371,819,608],{"class":377},[371,821,822],{"class":391},"error",[371,824,608],{"class":377},[371,826,827],{"class":381},"Error",[371,829,830],{"class":377},">>",[371,832,634],{"class":377},[371,834,836,839,842,844,847,849,852,854,857],{"class":373,"line":835},12,[371,837,838],{"class":667},"    let",[371,840,841],{"class":391}," conn ",[371,843,395],{"class":377},[371,845,846],{"class":381}," lapin",[371,848,608],{"class":377},[371,850,851],{"class":381},"Connection",[371,853,608],{"class":377},[371,855,856],{"class":630},"connect",[371,858,859],{"class":377},"(\n",[371,861,863,866,869,871],{"class":373,"line":862},13,[371,864,865],{"class":377},"        \"",[371,867,868],{"class":401},"amqp:\u002F\u002Fguest:guest@127.0.0.1:5672\u002F%2f",[371,870,420],{"class":377},[371,872,873],{"class":377},",\n",[371,875,877,880,882,885,887,890],{"class":373,"line":876},14,[371,878,879],{"class":381},"        lapin",[371,881,608],{"class":377},[371,883,884],{"class":381},"ConnectionProperties",[371,886,608],{"class":377},[371,888,889],{"class":630},"default",[371,891,892],{"class":377},"(),\n",[371,894,896],{"class":373,"line":895},15,[371,897,898],{"class":377},"    )\n",[371,900,902,905,909],{"class":373,"line":901},16,[371,903,904],{"class":377},"    .",[371,906,908],{"class":907},"s7zQu","await",[371,910,911],{"class":377},"?;\n",[371,913,915,917,920,922,925,927,930,932,935,938,941,943,945],{"class":373,"line":914},17,[371,916,838],{"class":667},[371,918,919],{"class":391}," channel ",[371,921,395],{"class":377},[371,923,924],{"class":381}," LapinChannel",[371,926,608],{"class":377},[371,928,929],{"class":630},"new",[371,931,645],{"class":377},[371,933,934],{"class":391},"conn",[371,936,937],{"class":377},".",[371,939,940],{"class":630},"create_channel",[371,942,705],{"class":377},[371,944,908],{"class":907},[371,946,947],{"class":377},"?);\n",[371,949,951],{"class":373,"line":950},18,[371,952,620],{"emptyLinePlaceholder":619},[371,954,956],{"class":373,"line":955},19,[371,957,958],{"class":391},"    channel\n",[371,960,962,965,968,970,972,975,977,979,982,984,986,989,991,993,995],{"class":373,"line":961},20,[371,963,964],{"class":377},"        .",[371,966,967],{"class":630},"queue_declare",[371,969,645],{"class":377},[371,971,420],{"class":377},[371,973,974],{"class":401},"events",[371,976,420],{"class":377},[371,978,544],{"class":377},[371,980,981],{"class":381}," Default",[371,983,608],{"class":377},[371,985,889],{"class":630},[371,987,988],{"class":377},"(),",[371,990,981],{"class":381},[371,992,608],{"class":377},[371,994,889],{"class":630},[371,996,997],{"class":377},"())\n",[371,999,1001,1003,1005],{"class":373,"line":1000},21,[371,1002,964],{"class":377},[371,1004,908],{"class":907},[371,1006,911],{"class":377},[371,1008,1010],{"class":373,"line":1009},22,[371,1011,620],{"emptyLinePlaceholder":619},[371,1013,1015,1017,1020,1022,1024,1026,1028,1030,1032,1035,1037,1039,1042,1044,1046,1048,1051],{"class":373,"line":1014},23,[371,1016,838],{"class":667},[371,1018,1019],{"class":391}," event ",[371,1021,395],{"class":377},[371,1023,674],{"class":381},[371,1025,530],{"class":377},[371,1027,685],{"class":391},[371,1029,688],{"class":377},[371,1031,398],{"class":377},[371,1033,1034],{"class":401},"user.created",[371,1036,420],{"class":377},[371,1038,937],{"class":377},[371,1040,1041],{"class":630},"into",[371,1043,988],{"class":377},[371,1045,724],{"class":391},[371,1047,688],{"class":377},[371,1049,1050],{"class":601}," 0",[371,1052,1053],{"class":377}," };\n",[371,1055,1057],{"class":373,"line":1056},24,[371,1058,958],{"class":391},[371,1060,1062,1064,1066,1068,1071,1073,1075,1077,1079,1081,1083,1085,1087,1089,1091,1093,1095,1097,1100,1103],{"class":373,"line":1061},25,[371,1063,964],{"class":377},[371,1065,353],{"class":630},[371,1067,645],{"class":377},[371,1069,1070],{"class":377},"\"\"",[371,1072,544],{"class":377},[371,1074,398],{"class":377},[371,1076,974],{"class":401},[371,1078,420],{"class":377},[371,1080,544],{"class":377},[371,1082,981],{"class":381},[371,1084,608],{"class":377},[371,1086,889],{"class":630},[371,1088,988],{"class":377},[371,1090,981],{"class":381},[371,1092,608],{"class":377},[371,1094,889],{"class":630},[371,1096,988],{"class":377},[371,1098,1099],{"class":377}," &",[371,1101,1102],{"class":391},"event",[371,1104,1105],{"class":377},")\n",[371,1107,1109,1111,1113],{"class":373,"line":1108},26,[371,1110,964],{"class":377},[371,1112,908],{"class":907},[371,1114,911],{"class":377},[371,1116,1118],{"class":373,"line":1117},27,[371,1119,620],{"emptyLinePlaceholder":619},[371,1121,1123,1126,1129,1132,1134,1137,1140,1143,1146,1148,1151,1153,1155,1157,1159,1161,1163,1165,1167,1170,1172,1175],{"class":373,"line":1122},28,[371,1124,1125],{"class":907},"    if",[371,1127,1128],{"class":667}," let",[371,1130,1131],{"class":381}," Some",[371,1133,645],{"class":377},[371,1135,1136],{"class":391},"message",[371,1138,1139],{"class":377},")",[371,1141,1142],{"class":377}," =",[371,1144,1145],{"class":391}," channel",[371,1147,937],{"class":377},[371,1149,1150],{"class":630},"basic_get",[371,1152,645],{"class":377},[371,1154,420],{"class":377},[371,1156,974],{"class":401},[371,1158,420],{"class":377},[371,1160,544],{"class":377},[371,1162,981],{"class":381},[371,1164,608],{"class":377},[371,1166,889],{"class":630},[371,1168,1169],{"class":377},"()).",[371,1171,908],{"class":907},[371,1173,1174],{"class":377},"?",[371,1176,634],{"class":377},[371,1178,1180],{"class":373,"line":1179},29,[371,1181,1182],{"class":423},"        \u002F\u002F Ack when valid, nack when invalid: every message is settled.\n",[371,1184,1186,1189,1192,1194,1196,1198],{"class":373,"line":1185},30,[371,1187,1188],{"class":667},"        let",[371,1190,1191],{"class":391}," parsed",[371,1193,688],{"class":377},[371,1195,674],{"class":381},[371,1197,1142],{"class":377},[371,1199,1200],{"class":391}," channel\n",[371,1202,1204,1207,1210,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231],{"class":373,"line":1203},31,[371,1205,1206],{"class":377},"            .",[371,1208,1209],{"class":630},"ack_or_nack_decode",[371,1211,1212],{"class":377},"(&",[371,1214,1136],{"class":391},[371,1216,544],{"class":377},[371,1218,981],{"class":381},[371,1220,608],{"class":377},[371,1222,889],{"class":630},[371,1224,988],{"class":377},[371,1226,981],{"class":381},[371,1228,608],{"class":377},[371,1230,889],{"class":630},[371,1232,997],{"class":377},[371,1234,1236,1238,1240],{"class":373,"line":1235},32,[371,1237,1206],{"class":377},[371,1239,908],{"class":907},[371,1241,911],{"class":377},[371,1243,1245,1248,1250,1253,1255,1257,1259,1261],{"class":373,"line":1244},33,[371,1246,1247],{"class":630},"        println!",[371,1249,645],{"class":377},[371,1251,1252],{"class":377},"\"{}\"",[371,1254,544],{"class":377},[371,1256,1191],{"class":391},[371,1258,937],{"class":377},[371,1260,1102],{"class":391},[371,1262,1263],{"class":377},");\n",[371,1265,1267],{"class":373,"line":1266},34,[371,1268,770],{"class":377},[371,1270,1272,1275],{"class":373,"line":1271},35,[371,1273,1274],{"class":381},"    Ok",[371,1276,1277],{"class":377},"(())\n",[371,1279,1281],{"class":373,"line":1280},36,[371,1282,776],{"class":377},[356,1284,1286],{"id":1285},"api","API",[1288,1289,1290,1312,1318,1331,1343,1349,1359,1368,1383],"ul",{},[1291,1292,1293,1296,1297,1300,1301,1304,1305,1308,1309,1311],"li",{},[344,1294,1295],{},"LapinChannel::new(channel)",", ",[344,1298,1299],{},"into_inner()","; ",[344,1302,1303],{},"Deref"," \u002F ",[344,1306,1307],{},"DerefMut"," to ",[344,1310,349],{}," for everything else.",[1291,1313,1314,1317],{},[344,1315,1316],{},"publish(exchange, routing_key, options, properties, &value)"," — validate, encode as JSON, publish and await the confirmation.",[1291,1319,1320,1296,1323,1326,1327,1330],{},[344,1321,1322],{},"queue_declare(name, options, args)",[344,1324,1325],{},"basic_get(queue, options)"," — ",[344,1328,1329],{},"&str"," convenience wrappers.",[1291,1332,1333,1296,1336,1296,1339,1342],{},[344,1334,1335],{},"decode_bytes",[344,1337,1338],{},"decode_delivery",[344,1340,1341],{},"decode_get"," — parse and validate without settling.",[1291,1344,1345,1348],{},[344,1346,1347],{},"ack_or_nack_decode(delivery, ack, nack)"," — ack when valid, nack when invalid.",[1291,1350,1351,1354,1355,937],{},[344,1352,1353],{},"ack_decode(delivery, ack)"," — ack when valid; an invalid message stays ",[1356,1357,1358],"strong",{},"unsettled",[1291,1360,1361,1304,1364,1367],{},[344,1362,1363],{},"nack_decode(delivery, nack)",[344,1365,1366],{},"reject_decode(delivery, reject)"," — settle only when invalid; a valid message stays unsettled for you to ack after processing.",[1291,1369,1370,1296,1373,1296,1376,1379,1380,1382],{},[344,1371,1372],{},"ack_decode_get",[344,1374,1375],{},"nack_decode_get",[344,1377,1378],{},"reject_decode_get"," — the same for ",[344,1381,1150],{}," messages.",[1291,1384,1385,1326,1388,1296,1391,1296,1394,1296,1397,937],{},[344,1386,1387],{},"VldLapinError",[344,1389,1390],{},"Validation",[344,1392,1393],{},"Serialization",[344,1395,1396],{},"Deserialization",[344,1398,1399],{},"Lapin(lapin::Error)",[356,1401,1403],{"id":1402},"gotchas","Gotchas",[1288,1405,1406,1422,1449],{},[1291,1407,1408,1411,1412,1415,1416,1418,1419,585],{},[1356,1409,1410],{},"The value type is the schema",": published values must be ",[344,1413,1414],{},"Serialize + VldParse"," (a ",[344,1417,631],{}," struct with ",[344,1420,1421],{},"#[derive(serde::Serialize)]",[1291,1423,1424,1427,1428,1431,1432,1435,1436,1296,1438,1441,1442,1445,1446,585],{},[1356,1425,1426],{},"Pick the settle helper deliberately."," With ",[344,1429,1430],{},"ack_decode",", a poison message stays unacked: it holds a ",[344,1433,1434],{},"basic_qos"," prefetch slot and is redelivered (to fail again) when the channel closes. Use ",[344,1437,1209],{},[344,1439,1440],{},"nack_decode"," or ",[344,1443,1444],{},"reject_decode"," so invalid messages are dropped or dead-lettered (",[344,1447,1448],{},"requeue: false",[1291,1450,1451],{},"When settling an invalid message fails, the settle error is returned instead of the validation error.",[1453,1454,1455],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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 .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":367,"searchDepth":388,"depth":408,"links":1457},[1458,1459,1460,1461,1462],{"id":358,"depth":388,"text":359},{"id":452,"depth":388,"text":453},{"id":588,"depth":388,"text":589},{"id":1285,"depth":388,"text":1286},{"id":1402,"depth":388,"text":1403},"A lapin channel wrapper that validates RabbitMQ message payloads before publish and after consume.","md",[1466,1471],{"label":1467,"icon":1468,"to":1469,"target":1470},"crates.io","i-simple-icons-rust","https:\u002F\u002Fcrates.io\u002Fcrates\u002Fvld-lapin","_blank",{"label":1472,"icon":307,"to":1473,"target":1470},"docs.rs","https:\u002F\u002Fdocs.rs\u002Fvld-lapin",{},{"title":256,"description":1463},"hQyTt3hcqAGwJoEgLP7iO23VDpLjHYEjHErqXVDbMWo",[1478,1480],{"title":252,"path":253,"stem":254,"description":1479,"children":-1},"A Redis connection wrapper that validates JSON payloads on write and on read.",{"title":266,"path":267,"stem":268,"description":1481,"children":-1},"Validate configuration loaded with config-rs or figment against a vld schema, with every invalid key reported at startup.",1794036362636]