mirror of
https://github.com/tokio-rs/axum.git
synced 2025-10-02 23:34:47 +00:00
Remove IntoResponse
and IntoResponseParts
impls for Version
(#815)
This commit is contained in:
parent
84c725a1ae
commit
5f54855b05
@ -3,7 +3,7 @@ use crate::{body, BoxError};
|
|||||||
use bytes::{buf::Chain, Buf, Bytes, BytesMut};
|
use bytes::{buf::Chain, Buf, Bytes, BytesMut};
|
||||||
use http::{
|
use http::{
|
||||||
header::{self, HeaderMap, HeaderName, HeaderValue},
|
header::{self, HeaderMap, HeaderName, HeaderValue},
|
||||||
StatusCode, Version,
|
StatusCode,
|
||||||
};
|
};
|
||||||
use http_body::{
|
use http_body::{
|
||||||
combinators::{MapData, MapErr},
|
combinators::{MapData, MapErr},
|
||||||
@ -136,14 +136,6 @@ impl IntoResponse for StatusCode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl IntoResponse for Version {
|
|
||||||
fn into_response(self) -> Response {
|
|
||||||
let mut res = ().into_response();
|
|
||||||
*res.version_mut() = self;
|
|
||||||
res
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl IntoResponse for () {
|
impl IntoResponse for () {
|
||||||
fn into_response(self) -> Response {
|
fn into_response(self) -> Response {
|
||||||
Empty::new().into_response()
|
Empty::new().into_response()
|
||||||
@ -384,30 +376,6 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<R> IntoResponse for (Version, R)
|
|
||||||
where
|
|
||||||
R: IntoResponse,
|
|
||||||
{
|
|
||||||
fn into_response(self) -> Response {
|
|
||||||
let mut res = self.1.into_response();
|
|
||||||
*res.version_mut() = self.0;
|
|
||||||
res
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<R> IntoResponse for (Version, StatusCode, R)
|
|
||||||
where
|
|
||||||
R: IntoResponse,
|
|
||||||
{
|
|
||||||
fn into_response(self) -> Response {
|
|
||||||
let (version, status, res) = self;
|
|
||||||
let mut res = res.into_response();
|
|
||||||
*res.version_mut() = version;
|
|
||||||
*res.status_mut() = status;
|
|
||||||
res
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl IntoResponse for HeaderMap {
|
impl IntoResponse for HeaderMap {
|
||||||
fn into_response(self) -> Response {
|
fn into_response(self) -> Response {
|
||||||
let mut res = ().into_response();
|
let mut res = ().into_response();
|
||||||
@ -501,34 +469,6 @@ macro_rules! impl_into_response {
|
|||||||
res
|
res
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(non_snake_case)]
|
|
||||||
impl<R, $($ty,)*> IntoResponse for (Version, StatusCode, $($ty),*, R)
|
|
||||||
where
|
|
||||||
$( $ty: IntoResponseParts, )*
|
|
||||||
R: IntoResponse,
|
|
||||||
{
|
|
||||||
fn into_response(self) -> Response {
|
|
||||||
let (version, status, $($ty),*, res) = self;
|
|
||||||
|
|
||||||
let res = res.into_response();
|
|
||||||
let parts = ResponseParts { res };
|
|
||||||
|
|
||||||
$(
|
|
||||||
let parts = match $ty.into_response_parts(parts) {
|
|
||||||
Ok(parts) => parts,
|
|
||||||
Err(err) => {
|
|
||||||
return err.into_response();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
)*
|
|
||||||
|
|
||||||
let mut res = parts.res;
|
|
||||||
*res.version_mut() = version;
|
|
||||||
*res.status_mut() = status;
|
|
||||||
res
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,13 +149,10 @@ async fn all_the_things(uri: Uri) -> impl IntoResponse {
|
|||||||
In general you can return tuples like:
|
In general you can return tuples like:
|
||||||
|
|
||||||
- `(StatusCode, impl IntoResponse)`
|
- `(StatusCode, impl IntoResponse)`
|
||||||
- `(Version, impl IntoResponse)`
|
|
||||||
- `(StatusCode, Version, impl IntoResponse)`
|
|
||||||
- `(T1, .., Tn, impl IntoResponse)` where `T1` to `Tn` all implement [`IntoResponseParts`].
|
- `(T1, .., Tn, impl IntoResponse)` where `T1` to `Tn` all implement [`IntoResponseParts`].
|
||||||
- `(StatusCode, T1, .., Tn, impl IntoResponse)` where `T1` to `Tn` all implement [`IntoResponseParts`].
|
- `(StatusCode, T1, .., Tn, impl IntoResponse)` where `T1` to `Tn` all implement [`IntoResponseParts`].
|
||||||
- `(StatusCode, Version, T1, .., Tn, impl IntoResponse)` where `T1` to `Tn` all implement [`IntoResponseParts`].
|
|
||||||
|
|
||||||
This means you cannot accidentally override the status, version, or body, as [`IntoResponseParts`] only allows
|
This means you cannot accidentally override the status or body as [`IntoResponseParts`] only allows
|
||||||
setting headers and extensions.
|
setting headers and extensions.
|
||||||
|
|
||||||
Use [`Response`](crate::response::Response) for more low level control:
|
Use [`Response`](crate::response::Response) for more low level control:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user