Simplify ruma_api_macros::api::strip_serde_attrs

This commit is contained in:
Jonas Platte 2019-11-16 14:05:23 +01:00
parent 02e9ff2ae6
commit 69ee18e0a9
No known key found for this signature in database
GPG Key ID: 7D261D771D915378

View File

@ -5,7 +5,7 @@ use quote::{quote, ToTokens};
use syn::{ use syn::{
braced, braced,
parse::{Parse, ParseStream, Result}, parse::{Parse, ParseStream, Result},
Field, FieldValue, Ident, Meta, Token, Field, FieldValue, Ident, Token,
}; };
mod attribute; mod attribute;
@ -18,25 +18,9 @@ use self::{metadata::Metadata, request::Request, response::Response};
/// Removes `serde` attributes from struct fields. /// Removes `serde` attributes from struct fields.
pub fn strip_serde_attrs(field: &Field) -> Field { pub fn strip_serde_attrs(field: &Field) -> Field {
let mut field = field.clone(); let mut field = field.clone();
field
field.attrs = field
.attrs .attrs
.into_iter() .retain(|attr| attr.path.segments.len() != 1 || attr.path.segments[0].ident != "serde");
.filter(|attr| {
let meta = attr
.parse_meta()
.expect("ruma_api! could not parse field attributes");
match meta {
Meta::List(meta_list) => {
let segments = &meta_list.path.segments;
segments.len() != 1 || segments[0].ident != "serde"
}
_ => true,
}
})
.collect();
field field
} }