1
0
Fork 0
mirror of https://github.com/actix/actix-web.git synced 2024-11-30 05:21:09 +00:00

remove generic body type in App. (#2493)

This commit is contained in:
fakeshadow 2021-12-07 23:53:04 +08:00 committed by GitHub
parent 9587261c20
commit 6460e67f84
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,9 +1,6 @@
use std::{cell::RefCell, fmt, future::Future, marker::PhantomData, rc::Rc}; use std::{cell::RefCell, fmt, future::Future, rc::Rc};
use actix_http::{ use actix_http::{body::MessageBody, Extensions, Request};
body::{BoxBody, MessageBody},
Extensions, Request,
};
use actix_service::{ use actix_service::{
apply, apply_fn_factory, boxed, IntoServiceFactory, ServiceFactory, ServiceFactoryExt, apply, apply_fn_factory, boxed, IntoServiceFactory, ServiceFactory, ServiceFactoryExt,
Transform, Transform,
@ -26,7 +23,7 @@ use crate::{
/// Application builder - structure that follows the builder pattern /// Application builder - structure that follows the builder pattern
/// for building application instances. /// for building application instances.
pub struct App<T, B> { pub struct App<T> {
endpoint: T, endpoint: T,
services: Vec<Box<dyn AppServiceFactory>>, services: Vec<Box<dyn AppServiceFactory>>,
default: Option<Rc<BoxedHttpServiceFactory>>, default: Option<Rc<BoxedHttpServiceFactory>>,
@ -34,10 +31,9 @@ pub struct App<T, B> {
data_factories: Vec<FnDataFactory>, data_factories: Vec<FnDataFactory>,
external: Vec<ResourceDef>, external: Vec<ResourceDef>,
extensions: Extensions, extensions: Extensions,
_phantom: PhantomData<B>,
} }
impl App<AppEntry, BoxBody> { impl App<AppEntry> {
/// Create application builder. Application can be configured with a builder-like pattern. /// Create application builder. Application can be configured with a builder-like pattern.
#[allow(clippy::new_without_default)] #[allow(clippy::new_without_default)]
pub fn new() -> Self { pub fn new() -> Self {
@ -51,22 +47,11 @@ impl App<AppEntry, BoxBody> {
factory_ref, factory_ref,
external: Vec::new(), external: Vec::new(),
extensions: Extensions::new(), extensions: Extensions::new(),
_phantom: PhantomData,
} }
} }
} }
impl<T, B> App<T, B> impl<T> App<T> {
where
B: MessageBody,
T: ServiceFactory<
ServiceRequest,
Config = (),
Response = ServiceResponse<B>,
Error = Error,
InitError = (),
>,
{
/// Set application (root level) data. /// Set application (root level) data.
/// ///
/// Application data stored with `App::app_data()` method is available through the /// Application data stored with `App::app_data()` method is available through the
@ -365,7 +350,7 @@ where
/// .route("/index.html", web::get().to(index)); /// .route("/index.html", web::get().to(index));
/// } /// }
/// ``` /// ```
pub fn wrap<M, B1>( pub fn wrap<M, B, B1>(
self, self,
mw: M, mw: M,
) -> App< ) -> App<
@ -376,9 +361,16 @@ where
Error = Error, Error = Error,
InitError = (), InitError = (),
>, >,
B1,
> >
where where
T: ServiceFactory<
ServiceRequest,
Response = ServiceResponse<B>,
Error = Error,
Config = (),
InitError = (),
>,
B: MessageBody,
M: Transform< M: Transform<
T::Service, T::Service,
ServiceRequest, ServiceRequest,
@ -396,7 +388,6 @@ where
factory_ref: self.factory_ref, factory_ref: self.factory_ref,
external: self.external, external: self.external,
extensions: self.extensions, extensions: self.extensions,
_phantom: PhantomData,
} }
} }
@ -431,7 +422,7 @@ where
/// .route("/index.html", web::get().to(index)); /// .route("/index.html", web::get().to(index));
/// } /// }
/// ``` /// ```
pub fn wrap_fn<B1, F, R>( pub fn wrap_fn<F, R, B, B1>(
self, self,
mw: F, mw: F,
) -> App< ) -> App<
@ -442,12 +433,19 @@ where
Error = Error, Error = Error,
InitError = (), InitError = (),
>, >,
B1,
> >
where where
B1: MessageBody, T: ServiceFactory<
ServiceRequest,
Response = ServiceResponse<B>,
Error = Error,
Config = (),
InitError = (),
>,
B: MessageBody,
F: Fn(ServiceRequest, &T::Service) -> R + Clone, F: Fn(ServiceRequest, &T::Service) -> R + Clone,
R: Future<Output = Result<ServiceResponse<B1>, Error>>, R: Future<Output = Result<ServiceResponse<B1>, Error>>,
B1: MessageBody,
{ {
App { App {
endpoint: apply_fn_factory(self.endpoint, mw), endpoint: apply_fn_factory(self.endpoint, mw),
@ -457,12 +455,11 @@ where
factory_ref: self.factory_ref, factory_ref: self.factory_ref,
external: self.external, external: self.external,
extensions: self.extensions, extensions: self.extensions,
_phantom: PhantomData,
} }
} }
} }
impl<T, B> IntoServiceFactory<AppInit<T, B>, Request> for App<T, B> impl<T, B> IntoServiceFactory<AppInit<T, B>, Request> for App<T>
where where
B: MessageBody, B: MessageBody,
T: ServiceFactory< T: ServiceFactory<