mirror of
https://github.com/tokio-rs/axum.git
synced 2026-09-03 00:00:07 +02:00
Implement IntoResponse and IntoResponseParts for http::Extensions (#975)
* Implement `IntoResponse` and `IntoResponseParts` for `http::Extensions` Requires a new release of `http`. * remove http patch * changelog ref
This commit is contained in:
@@ -7,7 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
# Unreleased
|
# Unreleased
|
||||||
|
|
||||||
- None.
|
- **added:** Implement `IntoResponse` and `IntoResponseParts` for `http::Extensions` ([#975])
|
||||||
|
|
||||||
|
[#975]: https://github.com/tokio-rs/axum/pull/975
|
||||||
|
|
||||||
# 0.2.3 (25. April, 2022)
|
# 0.2.3 (25. April, 2022)
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ version = "0.2.3" # remember to also bump the version that axum depends on
|
|||||||
async-trait = "0.1"
|
async-trait = "0.1"
|
||||||
bytes = "1.0"
|
bytes = "1.0"
|
||||||
futures-util = { version = "0.3", default-features = false, features = ["alloc"] }
|
futures-util = { version = "0.3", default-features = false, features = ["alloc"] }
|
||||||
http = "0.2"
|
http = "0.2.7"
|
||||||
http-body = "0.4"
|
http-body = "0.4"
|
||||||
mime = "0.3.16"
|
mime = "0.3.16"
|
||||||
|
|
||||||
|
|||||||
@@ -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,
|
Extensions, StatusCode,
|
||||||
};
|
};
|
||||||
use http_body::{
|
use http_body::{
|
||||||
combinators::{MapData, MapErr},
|
combinators::{MapData, MapErr},
|
||||||
@@ -384,6 +384,14 @@ impl IntoResponse for HeaderMap {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl IntoResponse for Extensions {
|
||||||
|
fn into_response(self) -> Response {
|
||||||
|
let mut res = ().into_response();
|
||||||
|
*res.extensions_mut() = self;
|
||||||
|
res
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<K, V, const N: usize> IntoResponse for [(K, V); N]
|
impl<K, V, const N: usize> IntoResponse for [(K, V); N]
|
||||||
where
|
where
|
||||||
K: TryInto<HeaderName>,
|
K: TryInto<HeaderName>,
|
||||||
|
|||||||
@@ -249,3 +249,12 @@ macro_rules! impl_into_response_parts {
|
|||||||
}
|
}
|
||||||
|
|
||||||
all_the_tuples!(impl_into_response_parts);
|
all_the_tuples!(impl_into_response_parts);
|
||||||
|
|
||||||
|
impl IntoResponseParts for Extensions {
|
||||||
|
type Error = Infallible;
|
||||||
|
|
||||||
|
fn into_response_parts(self, mut res: ResponseParts) -> Result<ResponseParts, Self::Error> {
|
||||||
|
res.extensions_mut().extend(self);
|
||||||
|
Ok(res)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user