use async_trait::async_trait; use crate::{context::RouteContext, response::Response}; #[allow(clippy::module_name_repetitions)] #[async_trait] pub trait RouteResponse: Send + Sync { async fn call(&mut self, context: RouteContext) -> Response; } #[async_trait] impl RouteResponse for T where T: FnMut(RouteContext) -> F + Send + Sync, F: std::future::Future + Send + 'static, { async fn call(&mut self, context: RouteContext) -> Response { (*self)(context).await } }