From 08c10fe58d896780bdc683bfcb31ee4916522cd0 Mon Sep 17 00:00:00 2001 From: David Pedersen Date: Tue, 1 Jun 2021 15:07:16 +0200 Subject: [PATCH] Tuple structs are cool --- examples/key_value_store.rs | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/examples/key_value_store.rs b/examples/key_value_store.rs index 382cae3d..a6d41826 100644 --- a/examples/key_value_store.rs +++ b/examples/key_value_store.rs @@ -11,7 +11,11 @@ use tower::{make::Shared, ServiceBuilder}; use tower_http::{ add_extension::AddExtensionLayer, compression::CompressionLayer, trace::TraceLayer, }; -use tower_web::{body::Body, extract, handler::Handler}; +use tower_web::{ + body::Body, + extract::{BytesMaxLength, Extension, UrlParams}, + handler::Handler, +}; #[tokio::main] async fn main() { @@ -48,14 +52,11 @@ struct State { async fn get( _req: Request, - params: extract::UrlParams<(String,)>, - state: extract::Extension, + UrlParams((key,)): UrlParams<(String,)>, + Extension(state): Extension, ) -> Result { - let state = state.0; let db = &state.lock().unwrap().db; - let (key,) = params.0; - if let Some(value) = db.get(&key) { Ok(value.clone()) } else { @@ -65,15 +66,9 @@ async fn get( async fn set( _req: Request, - params: extract::UrlParams<(String,)>, - value: extract::BytesMaxLength<{ 1024 * 5_000 }>, // ~5mb - state: extract::Extension, + UrlParams((key,)): UrlParams<(String,)>, + BytesMaxLength(value): BytesMaxLength<{ 1024 * 5_000 }>, // ~5mb + Extension(state): Extension, ) { - let state = state.0; - let db = &mut state.lock().unwrap().db; - - let (key,) = params.0; - let value = value.0; - - db.insert(key, value); + state.lock().unwrap().db.insert(key, value); }