Clean up code gen a bit

This commit is contained in:
Jonas Platte 2020-03-16 21:22:56 +01:00
parent 8a9bbb8c83
commit ddbb06f21d
No known key found for this signature in database
GPG Key ID: CC154DE0E30B7C67
2 changed files with 8 additions and 11 deletions

View File

@ -246,14 +246,6 @@ impl ToTokens for RumaEvent {
}) })
.collect(); .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 { let impl_room_event = match self.kind {
EventKind::RoomEvent | EventKind::StateEvent => { EventKind::RoomEvent | EventKind::StateEvent => {
quote! { quote! {
@ -368,16 +360,20 @@ impl ToTokens for RumaEvent {
#impl_event_result_compatible_for_content #impl_event_result_compatible_for_content
use serde::ser::SerializeStruct as _;
impl serde::Serialize for #name { impl serde::Serialize for #name {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where where
S: serde::Serializer S: serde::Serializer
{ {
use serde::ser::SerializeStruct as _;
#import_event_in_serialize_impl #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)* #(#serialize_field_calls)*
#manually_serialize_type_field #manually_serialize_type_field

View File

@ -8,6 +8,7 @@ use std::{
use ruma_events_macros::ruma_event; use ruma_events_macros::ruma_event;
use serde::{ use serde::{
de::{Error, Visitor}, de::{Error, Visitor},
ser::SerializeStruct as _,
Deserialize, Deserializer, Serialize, Serializer, Deserialize, Deserializer, Serialize, Serializer,
}; };
use serde_json::{from_value, Value}; use serde_json::{from_value, Value};