From 6d5e6d578a2c5cd517f92af211c36f4eeb213e9d Mon Sep 17 00:00:00 2001 From: Brad Dunbar Date: Thu, 30 Oct 2025 08:40:00 -0400 Subject: [PATCH] Use extensions directly in from_request_parts (#3542) --- axum-extra/src/extract/cached.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/axum-extra/src/extract/cached.rs b/axum-extra/src/extract/cached.rs index 64b4c305..0b299d2b 100644 --- a/axum-extra/src/extract/cached.rs +++ b/axum-extra/src/extract/cached.rs @@ -1,4 +1,4 @@ -use axum::extract::{Extension, FromRequestParts}; +use axum::extract::FromRequestParts; use http::request::Parts; /// Cache results of other extractors. @@ -88,13 +88,12 @@ where type Rejection = T::Rejection; async fn from_request_parts(parts: &mut Parts, state: &S) -> Result { - match Extension::>::from_request_parts(parts, state).await { - Ok(Extension(CachedEntry(value))) => Ok(Self(value)), - Err(_) => { - let value = T::from_request_parts(parts, state).await?; - parts.extensions.insert(CachedEntry(value.clone())); - Ok(Self(value)) - } + if let Some(value) = parts.extensions.get::>() { + Ok(Self(value.0.clone())) + } else { + let value = T::from_request_parts(parts, state).await?; + parts.extensions.insert(CachedEntry(value.clone())); + Ok(Self(value)) } } }