diff --git a/implicit-clone-derive/src/lib.rs b/implicit-clone-derive/src/lib.rs index 767f2bc..93f5d2e 100644 --- a/implicit-clone-derive/src/lib.rs +++ b/implicit-clone-derive/src/lib.rs @@ -2,9 +2,9 @@ use quote::quote; #[proc_macro_derive(ImplicitClone)] pub fn derive_implicit_clone(item: proc_macro::TokenStream) -> proc_macro::TokenStream { - let syn::ItemStruct { + let syn::DeriveInput { ident, generics, .. - } = syn::parse_macro_input!(item as syn::ItemStruct); + } = syn::parse_macro_input!(item as syn::DeriveInput); let (_impl_generics, ty_generics, where_clause) = generics.split_for_impl(); let generics = generics .params diff --git a/implicit-clone-derive/tests/function_component_attr/derive-pass.rs b/implicit-clone-derive/tests/function_component_attr/derive-pass.rs index e8569df..f1560a0 100644 --- a/implicit-clone-derive/tests/function_component_attr/derive-pass.rs +++ b/implicit-clone-derive/tests/function_component_attr/derive-pass.rs @@ -9,6 +9,14 @@ struct StructWithGenerics(T); #[derive(Clone, ImplicitClone)] struct StructWithGenericsWithBounds(T); +#[derive(Clone, ImplicitClone)] +enum ExampleEnum {} + +#[derive(Clone, ImplicitClone)] +enum EnumWithGenerics { + Variant(T), +} + fn main() { let _ = ImplicitClone::implicit_clone(&ExampleStruct); }