exc_service/
layer.rs

1use std::marker::PhantomData;
2
3use tower::Layer;
4
5use crate::{ExcService, Request};
6
7use super::Exc;
8
9/// Create [`Exc`] from the given [`ExcService`].
10pub struct ExcLayer<Req> {
11    _req: PhantomData<fn() -> Req>,
12}
13
14impl<Req> Default for ExcLayer<Req> {
15    fn default() -> Self {
16        Self { _req: PhantomData }
17    }
18}
19
20impl<S, Req> Layer<S> for ExcLayer<Req>
21where
22    Req: Request,
23    S: ExcService<Req>,
24{
25    type Service = Exc<S, Req>;
26
27    fn layer(&self, inner: S) -> Self::Service {
28        Exc::new(inner)
29    }
30}