Diffstat (limited to 'src/protocol.rs')
| -rw-r--r-- | src/protocol.rs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/protocol.rs b/src/protocol.rs index 2b48fc8..2535449 100644 --- a/src/protocol.rs +++ b/src/protocol.rs @@ -50,12 +50,26 @@ macro_rules! implementer { } } - $(impl<$ctx> $crate::protocol::Implementation<$ctx, $protocol> for $name { + $crate::implementer! { + $ctx $name [$($protocol),*] [$($generic)*] + } + }; + { + $ctx:lifetime $name:ty [$protocol:ty] [$($generic:tt)*] + } => { + impl<$ctx $($generic)*> $crate::protocol::Implementation<$ctx, $protocol> for $name { fn as_object(&mut self) -> <$protocol as $crate::protocol::Protocol>::Object<'_, $ctx> { self } + } + }; + { + $ctx:lifetime $name:ty [$($protocol:ty),*] $generic:tt + } => { + $($crate::implementer! { + $ctx $name [$protocol] $generic })* - } + }; } #[doc(inline)] pub use implementer; |