events-macros: Refactor expand_event

This commit is contained in:
Jonas Platte 2021-08-17 12:39:16 +02:00
parent 15553e1da9
commit b84cc8d905
No known key found for this signature in database
GPG Key ID: 7D261D771D915378

View File

@ -20,22 +20,19 @@ pub fn expand_event(input: DeriveInput) -> syn::Result<TokenStream> {
syn::Error::new_spanned(ident, "not a valid ruma event struct identifier") syn::Error::new_spanned(ident, "not a valid ruma event struct identifier")
})?; })?;
let fields: Vec<_> = if let Data::Struct(DataStruct { fields, .. }) = input.data.clone() { let fields: Vec<_> = if let Data::Struct(DataStruct {
if let Fields::Named(FieldsNamed { named, .. }) = fields { fields: Fields::Named(FieldsNamed { named, .. }),
if !named.iter().any(|f| f.ident.as_ref().unwrap() == "content") { ..
return Err(syn::Error::new( }) = &input.data
Span::call_site(), {
"struct must contain a `content` field", 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",
)); ));
} }
named.iter().cloned().collect()
} else { } else {
return Err(syn::Error::new_spanned( return Err(syn::Error::new_spanned(
input.ident, input.ident,