rama_core/inspect/
option.rs1use crate::{Context, Service};
2
3impl<I, StateIn, StateOut, RequestIn, RequestOut> Service<StateIn, RequestIn> for Option<I>
4where
5 I: Service<StateIn, RequestIn, Response = (Context<StateOut>, RequestOut)>,
6 StateIn: Into<StateOut> + Clone + Send + Sync + 'static,
7 StateOut: Clone + Send + Sync + 'static,
8 RequestIn: Into<RequestOut> + Send + 'static,
9 RequestOut: Send + 'static,
10{
11 type Error = I::Error;
12 type Response = I::Response;
13
14 async fn serve(
15 &self,
16 ctx: Context<StateIn>,
17 req: RequestIn,
18 ) -> Result<Self::Response, Self::Error> {
19 match self {
20 Some(inspector) => inspector.serve(ctx, req).await,
21 None => Ok((ctx.map_state(Into::into), req.into())),
22 }
23 }
24}