Remove unneeded bounds on S in FromRequest(Parts) implementations

This doesn't actually allow using non-Send or non-Sync state types, but
it makes the docs simpler.
This commit is contained in:
Jonas Platte
2022-11-05 11:04:56 +01:00
parent da058db509
commit 05767b986e
39 changed files with 112 additions and 232 deletions
@@ -81,16 +81,11 @@ struct BufferRequestBody(Bytes);
// we must implement `FromRequest` (and not `FromRequestParts`) to consume the body
#[async_trait]
impl<S> FromRequest<S, BoxBody> for BufferRequestBody
where
S: Send + Sync,
{
impl<S> FromRequest<S, BoxBody> for BufferRequestBody {
type Rejection = Response;
async fn from_request(req: Request<BoxBody>, state: &S) -> Result<Self, Self::Rejection> {
let body = Bytes::from_request(req, state)
.await
.map_err(|err| err.into_response())?;
async fn from_request(req: Request<BoxBody>, _: &S) -> Result<Self, Self::Rejection> {
let body: Bytes = req.extract().await.map_err(|err| err.into_response())?;
do_thing_with_request_body(body.clone());
+2 -5
View File
@@ -122,13 +122,10 @@ impl AuthBody {
}
#[async_trait]
impl<S> FromRequestParts<S> for Claims
where
S: Send + Sync,
{
impl<S> FromRequestParts<S> for Claims {
type Rejection = AuthError;
async fn from_request_parts(parts: &mut Parts, _state: &S) -> Result<Self, Self::Rejection> {
async fn from_request_parts(parts: &mut Parts, _: &S) -> Result<Self, Self::Rejection> {
// Extract the token from the authorization header
let TypedHeader(Authorization(bearer)) = parts
.extract::<TypedHeader<Authorization<Bearer>>>()
@@ -60,7 +60,6 @@ enum JsonOrForm<T, K = T> {
impl<S, B, T, U> FromRequest<S, B> for JsonOrForm<T, U>
where
B: Send + 'static,
S: Send + Sync,
Json<T>: FromRequest<(), B>,
Form<U>: FromRequest<(), B>,
T: 'static,
@@ -68,7 +67,7 @@ where
{
type Rejection = Response;
async fn from_request(req: Request<B>, _state: &S) -> Result<Self, Self::Rejection> {
async fn from_request(req: Request<B>, _: &S) -> Result<Self, Self::Rejection> {
let content_type_header = req.headers().get(CONTENT_TYPE);
let content_type = content_type_header.and_then(|value| value.to_str().ok());
+1 -1
View File
@@ -70,7 +70,7 @@ where
type Rejection = ServerError;
async fn from_request(req: Request<B>, state: &S) -> Result<Self, Self::Rejection> {
let Form(value) = Form::<T>::from_request(req, state).await?;
let Form(value): Form<T> = req.extract().await?;
value.validate()?;
Ok(ValidatedForm(value))
}
+2 -5
View File
@@ -48,13 +48,10 @@ enum Version {
}
#[async_trait]
impl<S> FromRequestParts<S> for Version
where
S: Send + Sync,
{
impl<S> FromRequestParts<S> for Version {
type Rejection = Response;
async fn from_request_parts(parts: &mut Parts, _state: &S) -> Result<Self, Self::Rejection> {
async fn from_request_parts(parts: &mut Parts, _: &S) -> Result<Self, Self::Rejection> {
let params: Path<HashMap<String, String>> =
parts.extract().await.map_err(IntoResponse::into_response)?;