1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#[macro_export]
macro_rules! callback {
    ($cb:ident) => {
        |ctx, event| Box::pin($cb(ctx, event))
    };
    ($cb:path) => {
        |ctx, event| Box::pin($cb(ctx, event))
    };
    ($ctx:ident, $event:ident,$cb:expr) => {
        move |$ctx, $event| Box::pin($cb)
    };
}

#[macro_export]
macro_rules! namespace {
    ($nsp:path) => {
        Namespace::from_provider::<$nsp>()
    };
}

#[macro_export]
macro_rules! events{
    ($handler:expr, $($name:expr => $cb:ident), *) => {
        $(
            $handler.on($name, callback!($cb));
        )*
    };
    ($handler:expr, $($name:expr => $cb:path), *) => {
        $(
            $handler.on($name, callback!($cb));
        )*
    }
}