Skip to main content

HttpProtocol

Trait HttpProtocol 

Source
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§

Source

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 Methods§

Source

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§

Source§

impl<Io> HttpProtocol for Http1<Io>
where Io: AsyncRead + AsyncWrite + Unpin + 'static,

Available on crate feature h1 only.
Source§

impl<Io> HttpProtocol for Http1Zerocopy<Io>
where for<'a> Io: AsyncRead + AsyncWrite + AsInnerRawHandle<'a> + Unpin + 'static,

Available on Linux and crate feature h1-zerocopy and crate feature h1 only.
Source§

impl<Io> HttpProtocol for Http2<Io>
where Io: AsyncRead + AsyncWrite + Unpin + 'static,

Available on crate feature h2 only.