From 24d0b2e2bb4793671d0c50612a9dddc56450d01b Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Tue, 6 Sep 2022 18:35:43 +0200 Subject: [PATCH] events: Implement content sub-traits for event content enums --- crates/ruma-macros/src/events/event_enum.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/crates/ruma-macros/src/events/event_enum.rs b/crates/ruma-macros/src/events/event_enum.rs index 0e2ffb5b..0dae7404 100644 --- a/crates/ruma-macros/src/events/event_enum.rs +++ b/crates/ruma-macros/src/events/event_enum.rs @@ -360,6 +360,10 @@ fn expand_content_enum( let variant_decls = variants.iter().map(|v| v.decl()).collect::>(); let variant_arms = variants.iter().map(|v| v.match_arm(quote! { Self })).collect::>(); + let sub_trait_name = format_ident!("{kind}Content"); + let state_event_content_impl = + (kind == EventKind::State).then(|| quote! { type StateKey = String; }); + let from_impl = expand_from_impl(&ident, &content, variants); let serialize_custom_event_error_path = @@ -409,6 +413,11 @@ fn expand_content_enum( } } + #[automatically_derived] + impl #ruma_common::events::#sub_trait_name for #ident { + #state_event_content_impl + } + #from_impl }) }