From b84cc8d90599225b724a16ca57e380adff779d1d Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Tue, 17 Aug 2021 12:39:16 +0200 Subject: [PATCH] events-macros: Refactor expand_event --- crates/ruma-events-macros/src/event.rs | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/crates/ruma-events-macros/src/event.rs b/crates/ruma-events-macros/src/event.rs index 80b9fab2..7d6364cd 100644 --- a/crates/ruma-events-macros/src/event.rs +++ b/crates/ruma-events-macros/src/event.rs @@ -20,22 +20,19 @@ pub fn expand_event(input: DeriveInput) -> syn::Result { syn::Error::new_spanned(ident, "not a valid ruma event struct identifier") })?; - let fields: Vec<_> = if let Data::Struct(DataStruct { fields, .. }) = input.data.clone() { - if let Fields::Named(FieldsNamed { named, .. }) = fields { - if !named.iter().any(|f| f.ident.as_ref().unwrap() == "content") { - return Err(syn::Error::new( - Span::call_site(), - "struct must contain a `content` field", - )); - } - - named.into_iter().collect() - } else { - return Err(syn::Error::new_spanned( - fields, - "the `Event` derive only supports named fields", + let fields: Vec<_> = if let Data::Struct(DataStruct { + fields: Fields::Named(FieldsNamed { named, .. }), + .. + }) = &input.data + { + if !named.iter().any(|f| f.ident.as_ref().unwrap() == "content") { + return Err(syn::Error::new( + Span::call_site(), + "struct must contain a `content` field", )); } + + named.iter().cloned().collect() } else { return Err(syn::Error::new_spanned( input.ident,