From ddbb06f21d1fd6cbbe3b88c4eff8801e524e5aee Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Mon, 16 Mar 2020 21:22:56 +0100 Subject: [PATCH] Clean up code gen a bit --- ruma-events-macros/src/gen.rs | 18 +++++++----------- src/push_rules.rs | 1 + 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/ruma-events-macros/src/gen.rs b/ruma-events-macros/src/gen.rs index 79cbe6c5..d7bacc31 100644 --- a/ruma-events-macros/src/gen.rs +++ b/ruma-events-macros/src/gen.rs @@ -246,14 +246,6 @@ impl ToTokens for RumaEvent { }) .collect(); - let set_up_struct_serializer = quote! { - let mut len = #base_field_count; - - #(#increment_struct_len_statements)* - - let mut state = serializer.serialize_struct(#name_str, len)?; - }; - let impl_room_event = match self.kind { EventKind::RoomEvent | EventKind::StateEvent => { quote! { @@ -368,16 +360,20 @@ impl ToTokens for RumaEvent { #impl_event_result_compatible_for_content - use serde::ser::SerializeStruct as _; - impl serde::Serialize for #name { fn serialize(&self, serializer: S) -> Result where S: serde::Serializer { + use serde::ser::SerializeStruct as _; + #import_event_in_serialize_impl - #set_up_struct_serializer + let mut len = #base_field_count; + + #(#increment_struct_len_statements)* + + let mut state = serializer.serialize_struct(#name_str, len)?; #(#serialize_field_calls)* #manually_serialize_type_field diff --git a/src/push_rules.rs b/src/push_rules.rs index 0ad7f6cd..10388662 100644 --- a/src/push_rules.rs +++ b/src/push_rules.rs @@ -8,6 +8,7 @@ use std::{ use ruma_events_macros::ruma_event; use serde::{ de::{Error, Visitor}, + ser::SerializeStruct as _, Deserialize, Deserializer, Serialize, Serializer, }; use serde_json::{from_value, Value};