diff --git a/src/response.rs b/src/response.rs index 6acf3630..f7157ab6 100644 --- a/src/response.rs +++ b/src/response.rs @@ -137,22 +137,21 @@ impl IntoResponse for StatusCode { impl<T> IntoResponse for (StatusCode, T) where - T: Into<Body>, + T: IntoResponse, { fn into_response(self) -> Response<Body> { - Response::builder() - .status(self.0) - .body(self.1.into()) - .unwrap() + let mut res = self.1.into_response(); + *res.status_mut() = self.0; + res } } impl<T> IntoResponse for (HeaderMap, T) where - T: Into<Body>, + T: IntoResponse, { fn into_response(self) -> Response<Body> { - let mut res = Response::new(self.1.into()); + let mut res = self.1.into_response(); *res.headers_mut() = self.0; res } @@ -160,10 +159,10 @@ where impl<T> IntoResponse for (StatusCode, HeaderMap, T) where - T: Into<Body>, + T: IntoResponse, { fn into_response(self) -> Response<Body> { - let mut res = Response::new(self.2.into()); + let mut res = self.2.into_response(); *res.status_mut() = self.0; *res.headers_mut() = self.1; res