mirror of
https://github.com/tokio-rs/axum.git
synced 2025-04-26 13:56:22 +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:
parent
d606728333
commit
5bb924b3a2
4 changed files with 22 additions and 3 deletions
axum-core
|
@ -7,7 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
# 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)
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ version = "0.2.3" # remember to also bump the version that axum depends on
|
|||
async-trait = "0.1"
|
||||
bytes = "1.0"
|
||||
futures-util = { version = "0.3", default-features = false, features = ["alloc"] }
|
||||
http = "0.2"
|
||||
http = "0.2.7"
|
||||
http-body = "0.4"
|
||||
mime = "0.3.16"
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ use crate::{body, BoxError};
|
|||
use bytes::{buf::Chain, Buf, Bytes, BytesMut};
|
||||
use http::{
|
||||
header::{self, HeaderMap, HeaderName, HeaderValue},
|
||||
StatusCode,
|
||||
Extensions, StatusCode,
|
||||
};
|
||||
use http_body::{
|
||||
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]
|
||||
where
|
||||
K: TryInto<HeaderName>,
|
||||
|
|
|
@ -249,3 +249,12 @@ macro_rules! 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)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue