Diffstat (limited to 'src/protocol.rs')
-rw-r--r--src/protocol.rs18
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;