1
0
Fork 0
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 ()

* Implement `IntoResponse` and `IntoResponseParts` for `http::Extensions`

Requires a new release of `http`.

* remove http patch

* changelog ref
This commit is contained in:
David Pedersen 2022-04-29 17:28:24 +02:00 committed by GitHub
parent d606728333
commit 5bb924b3a2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 3 deletions

View file

@ -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)

View file

@ -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"

View file

@ -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>,

View file

@ -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)
}
}