| 49 | use syn::{parse_macro_input, spanned::Spanned, Attribute, Ident, ItemEnum, Variant, Visibility}; |
| 50 | |
| 51 | fn enum_definition<'a>( |
| 52 | attrs: impl IntoIterator<Item = Attribute>, |
| 53 | vis: &Visibility, |
| 54 | ident: &Ident, |
| 55 | variants: impl IntoIterator<Item = &'a Variant>, |
| 56 | ) -> TokenStream2 { |
| 57 | let attrs = attrs.into_iter(); |
| 58 | let variants = variants.into_iter(); |
| 59 | |
| 60 | quote! { |
| 61 | #(#attrs)* |
| 62 | #[derive(Debug, Clone, Copy)] |
| 63 | #vis enum #ident { |
| 64 | #( #variants ),* |
| 65 | } |
| 66 | } |
| 67 | } |
| 68 | |
| 69 | fn atomic_enum_definition(vis: &Visibility, ident: &Ident, atomic_ident: &Ident) -> TokenStream2 { |
| 70 | let atomic_ident_docs = format!( |