Avoid cloning the uri/path

This commit is contained in:
novacrazy 2024-10-10 10:36:22 +02:00 committed by Jonas Platte
parent c417a28142
commit 236781cfdc
No known key found for this signature in database
GPG key ID: 7D261D771D915378

View file

@ -331,9 +331,9 @@ where
} }
} }
let path = req.uri().path().to_owned(); let (mut parts, body) = req.into_parts();
match self.node.at(&path) { match self.node.at(parts.uri.path()) {
Ok(match_) => { Ok(match_) => {
let id = *match_.value; let id = *match_.value;
@ -342,17 +342,18 @@ where
crate::extract::matched_path::set_matched_path_for_request( crate::extract::matched_path::set_matched_path_for_request(
id, id,
&self.node.route_id_to_path, &self.node.route_id_to_path,
req.extensions_mut(), &mut parts.extensions,
); );
} }
url_params::insert_url_params(req.extensions_mut(), match_.params); url_params::insert_url_params(&mut parts.extensions, match_.params);
let endpoint = self let endpoint = self
.routes .routes
.get(&id) .get(&id)
.expect("no route for id. This is a bug in axum. Please file an issue"); .expect("no route for id. This is a bug in axum. Please file an issue");
let req = Request::from_parts(parts, body);
match endpoint { match endpoint {
Endpoint::MethodRouter(method_router) => { Endpoint::MethodRouter(method_router) => {
Ok(method_router.call_with_state(req, state)) Ok(method_router.call_with_state(req, state))
@ -366,7 +367,7 @@ where
MatchError::NotFound MatchError::NotFound
| MatchError::ExtraTrailingSlash | MatchError::ExtraTrailingSlash
| MatchError::MissingTrailingSlash, | MatchError::MissingTrailingSlash,
) => Err((req, state)), ) => Err((Request::from_parts(parts, body), state)),
} }
} }