Skip to main content

medi_rs/handler/
macros.rs

1#[macro_export]
2macro_rules! impl_static_handler {
3    ($($T:ident : $I:ident),*) => {
4        impl<F, Fut, R, Req, Res, E, $($T, $I,)*>
5            $crate::StaticHandler<R, Req, ($($crate::Dependency<$T, $I>,)*)> for F
6        where
7            F: FnOnce($($T,)* Req) -> Fut + Clone + Send,
8            Req: Send,
9            Res: Send,
10            E: Send,
11            $(R: $crate::tlist::Get<$T, $I>,)*
12            Fut: core::future::Future<Output = core::result::Result<Res, E>> + Send,
13        {
14            type Response = Res;
15            type Error = E;
16
17            fn handle(self, resources: &R, value: Req)
18                -> impl core::future::Future<Output = core::result::Result<Self::Response, Self::Error>> + Send
19            {
20                let _ = resources;
21                let future = self($($crate::tlist::get::<$T, $I, R>(resources),)* value);
22                future
23            }
24        }
25    };
26}