]> git.lizzy.rs Git - mt_ser.git/commitdiff
Don't require repr for custom enum implementations
authorLizzy Fleckenstein <eliasfleckenstein@web.de>
Mon, 13 Feb 2023 17:02:42 +0000 (18:02 +0100)
committerLizzy Fleckenstein <eliasfleckenstein@web.de>
Mon, 13 Feb 2023 17:02:42 +0000 (18:02 +0100)
derive/src/lib.rs

index 5f301e9adb8b674124c8d2e802e2526126e4543d..82d964421b8628e624ebc18d2ed49ce2b86c8929 100644 (file)
@@ -81,10 +81,12 @@ pub fn mt_derive(attr: TokenStream, item: TokenStream) -> TokenStream {
                 iter!(v.fields, |f| iter!(f.attrs, wrap_attr));
             });
 
-            let repr = args.repr.expect("missing repr for enum");
-
             if args.enumset {
-                let repr_str = repr.to_token_stream().to_string();
+                let repr_str = args
+                    .repr
+                    .expect("missing repr for enum")
+                    .to_token_stream()
+                    .to_string();
 
                 out.extend(quote! {
                     #[derive(EnumSetType)]
@@ -115,8 +117,15 @@ pub fn mt_derive(attr: TokenStream, item: TokenStream) -> TokenStream {
                     });
                 }
 
+                if let Some(repr) = args.repr {
+                    out.extend(quote! {
+                        #[repr(#repr)]
+                    });
+                } else if !args.custom {
+                    panic!("missing repr for enum");
+                }
+
                 out.extend(quote! {
-                    #[repr(#repr)]
                     #[derive(Clone, PartialEq)]
                 });