1use core::{error::Error, future::Future};
2use executor_core::Executor;
3use http_kit::{
4 utils::{AsyncRead, AsyncWrite, Stream},
5 Endpoint,
6};
7
8pub trait Server {
10 fn serve<C, E>(
15 self,
16 executor: impl Executor + 'static,
17 error_handler: impl Fn(E) + Send + Sync + 'static,
18 connections: impl Stream<Item = Result<C, E>> + Unpin + Send + 'static,
19 endpoint: impl Endpoint + Sync + Clone + 'static,
20 ) -> impl Future<Output = ()>
21 where
22 C: Unpin + Send + AsyncRead + AsyncWrite + 'static,
23 E: Error;
24}