1use proc_macro::TokenStream;
2use quote::quote;
3use syn::{parse_macro_input, DeriveInput};
4
5#[proc_macro_attribute]
7pub fn tsync(_attr: TokenStream, item: TokenStream) -> TokenStream {
8 let mut input = parse_macro_input!(item as DeriveInput);
9
10 if let syn::Data::Struct(ref mut data) = input.data {
12 if let syn::Fields::Named(ref mut fields) = data.fields {
13 for field in fields.named.iter_mut() {
14 field.attrs.retain(|attr| !attr.path().is_ident("tsync"));
16 }
17 }
18 }
19
20 if let syn::Data::Enum(ref mut data) = input.data {
21 for variant in data.variants.iter_mut() {
22 variant.attrs.retain(|attr| !attr.path().is_ident("tsync"));
24 }
25 }
26
27 quote! {
29 #input
30 }
31 .into()
32}