From 2b6ae09568f29451b731674a578275955314badc Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Tue, 25 Mar 2025 13:07:35 +0100 Subject: [PATCH] Simplify Handler async blocks (#3285) --- axum/CHANGELOG.md | 2 ++ axum/src/handler/mod.rs | 12 ++++-------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/axum/CHANGELOG.md b/axum/CHANGELOG.md index ad23b447..b0e306c8 100644 --- a/axum/CHANGELOG.md +++ b/axum/CHANGELOG.md @@ -8,8 +8,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 # Unreleased - **added:** Implement `From` for `Message` ([#3273]) +- **changed:** Improved code size / compile time of `Handler` implementations ([#3285]) [#3273]: https://github.com/tokio-rs/axum/pull/3273 +[#3285]: https://github.com/tokio-rs/axum/pull/3285 # 0.8.2 diff --git a/axum/src/handler/mod.rs b/axum/src/handler/mod.rs index 4821fe18..68c0032d 100644 --- a/axum/src/handler/mod.rs +++ b/axum/src/handler/mod.rs @@ -220,12 +220,10 @@ macro_rules! impl_handler { type Future = Pin + Send>>; fn call(self, req: Request, state: S) -> Self::Future { + let (mut parts, body) = req.into_parts(); Box::pin(async move { - let (mut parts, body) = req.into_parts(); - let state = &state; - $( - let $ty = match $ty::from_request_parts(&mut parts, state).await { + let $ty = match $ty::from_request_parts(&mut parts, &state).await { Ok(value) => value, Err(rejection) => return rejection.into_response(), }; @@ -233,14 +231,12 @@ macro_rules! impl_handler { let req = Request::from_parts(parts, body); - let $last = match $last::from_request(req, state).await { + let $last = match $last::from_request(req, &state).await { Ok(value) => value, Err(rejection) => return rejection.into_response(), }; - let res = self($($ty,)* $last,).await; - - res.into_response() + self($($ty,)* $last,).await.into_response() }) } }