Avoid cloning the uri/path

This commit is contained in:
novacrazy 2024-10-10 10:36:22 +02:00 committed by Yann Simon
parent 9feb526c03
commit 1e118ccca9

View file

@ -367,9 +367,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_) => {
let id = *match_.value;
@ -378,17 +378,18 @@ where
crate::extract::matched_path::set_matched_path_for_request(
id,
&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
.routes
.get(&id)
.expect("no route for id. This is a bug in axum. Please file an issue");
let req = Request::from_parts(parts, body);
match endpoint {
Endpoint::MethodRouter(method_router) => {
Ok(method_router.call_with_state(req, state))
@ -398,7 +399,7 @@ where
}
// explicitly handle all variants in case matchit adds
// new ones we need to handle differently
Err(MatchError::NotFound) => Err((req, state)),
Err(MatchError::NotFound) => Err((Request::from_parts(parts, body), state)),
}
}