pub trait HttpProtocol: Sized {
// Required method
fn handle<F, Fut, ResB, ResBE, ResE>(
self,
request_fn: F,
) -> impl Future<Output = Result<(), Error>>
where F: Fn(Request<Incoming>) -> Fut + 'static,
Fut: Future<Output = Result<Response<ResB>, ResE>> + 'static,
ResB: Body<Data = Bytes, Error = ResBE> + Unpin + 'static,
ResE: Error,
ResBE: Error;
// Provided method
fn handle_with_error_fn<F, Fut, ResB, ResBE, ResE, EF, EFut, EResB, EResBE, EResE>(
self,
request_fn: F,
error_fn: EF,
) -> impl Future<Output = Result<(), Error>>
where F: Fn(Request<Incoming>) -> Fut + 'static,
Fut: Future<Output = Result<Response<ResB>, ResE>> + 'static,
ResB: Body<Data = Bytes, Error = ResBE> + Unpin + 'static,
ResE: Error,
ResBE: Error,
EF: FnOnce(bool) -> EFut,
EFut: Future<Output = Result<Response<EResB>, EResE>>,
EResB: Body<Data = Bytes, Error = EResBE> + Unpin + 'static,
EResE: Error,
EResBE: Error { ... }
}Expand description
A trait representing an HTTP protocol (for example, HTTP/1.1, HTTP/2, HTTP/3).
This trait provides a simple, type-erased interface for handling HTTP requests across different protocol versions.
Required Methods§
fn handle<F, Fut, ResB, ResBE, ResE>( self, request_fn: F, ) -> impl Future<Output = Result<(), Error>>
Provided Methods§
fn handle_with_error_fn<F, Fut, ResB, ResBE, ResE, EF, EFut, EResB, EResBE, EResE>(
self,
request_fn: F,
error_fn: EF,
) -> impl Future<Output = Result<(), Error>>where
F: Fn(Request<Incoming>) -> Fut + 'static,
Fut: Future<Output = Result<Response<ResB>, ResE>> + 'static,
ResB: Body<Data = Bytes, Error = ResBE> + Unpin + 'static,
ResE: Error,
ResBE: Error,
EF: FnOnce(bool) -> EFut,
EFut: Future<Output = Result<Response<EResB>, EResE>>,
EResB: Body<Data = Bytes, Error = EResBE> + Unpin + 'static,
EResE: Error,
EResBE: Error,
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementors§
impl<Io> HttpProtocol for Http1<Io>
Available on crate feature
h1 only.impl<Io> HttpProtocol for Http1Zerocopy<Io>
Available on Linux and crate feature
h1-zerocopy and crate feature h1 only.impl<Io> HttpProtocol for Http2<Io>
Available on crate feature
h2 only.