pub async fn listen<TContext, TMiddleware, TState, TErrorData, TShutdownSignal, TListenAddr>(
app: App<TContext, TMiddleware, TState, TErrorData>,
bind_addr: TListenAddr,
shutdown_signal: Option<TShutdownSignal>
)where
TContext: 'static + Context + Debug + Send + Sync,
TMiddleware: 'static + Middleware<TContext, TErrorData> + Clone + Send + Sync,
TState: 'static + Send + Sync,
TShutdownSignal: Future<Output = ()>,
TErrorData: 'static + Default + Send + Sync,
TListenAddr: Into<SocketAddr>,