diff options
Diffstat (limited to 'vendor/hyper/src/service/util.rs')
| -rw-r--r-- | vendor/hyper/src/service/util.rs | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/vendor/hyper/src/service/util.rs b/vendor/hyper/src/service/util.rs deleted file mode 100644 index 3e017a78..00000000 --- a/vendor/hyper/src/service/util.rs +++ /dev/null @@ -1,82 +0,0 @@ -use std::error::Error as StdError; -use std::fmt; -use std::future::Future; -use std::marker::PhantomData; - -use crate::body::Body; -use crate::service::service::Service; -use crate::{Request, Response}; - -/// Create a `Service` from a function. -/// -/// # Example -/// -/// ``` -/// use bytes::Bytes; -/// use hyper::{body, Request, Response, Version}; -/// use http_body_util::Full; -/// use hyper::service::service_fn; -/// -/// let service = service_fn(|req: Request<body::Incoming>| async move { -/// if req.version() == Version::HTTP_11 { -/// Ok(Response::new(Full::<Bytes>::from("Hello World"))) -/// } else { -/// // Note: it's usually better to return a Response -/// // with an appropriate StatusCode instead of an Err. -/// Err("not HTTP/1.1, abort connection") -/// } -/// }); -/// ``` -pub fn service_fn<F, R, S>(f: F) -> ServiceFn<F, R> -where - F: Fn(Request<R>) -> S, - S: Future, -{ - ServiceFn { - f, - _req: PhantomData, - } -} - -/// Service returned by [`service_fn`] -pub struct ServiceFn<F, R> { - f: F, - _req: PhantomData<fn(R)>, -} - -impl<F, ReqBody, Ret, ResBody, E> Service<Request<ReqBody>> for ServiceFn<F, ReqBody> -where - F: Fn(Request<ReqBody>) -> Ret, - ReqBody: Body, - Ret: Future<Output = Result<Response<ResBody>, E>>, - E: Into<Box<dyn StdError + Send + Sync>>, - ResBody: Body, -{ - type Response = crate::Response<ResBody>; - type Error = E; - type Future = Ret; - - fn call(&self, req: Request<ReqBody>) -> Self::Future { - (self.f)(req) - } -} - -impl<F, R> fmt::Debug for ServiceFn<F, R> { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("impl Service").finish() - } -} - -impl<F, R> Clone for ServiceFn<F, R> -where - F: Clone, -{ - fn clone(&self) -> Self { - ServiceFn { - f: self.f.clone(), - _req: PhantomData, - } - } -} - -impl<F, R> Copy for ServiceFn<F, R> where F: Copy {} |
