diff options
author | Lizzy Fleckenstein <eliasfleckenstein@web.de> | 2023-02-13 18:02:42 +0100 |
---|---|---|
committer | Lizzy Fleckenstein <eliasfleckenstein@web.de> | 2023-02-13 18:02:42 +0100 |
commit | 2a08d84120643db61cce60da67b012ea34e460df (patch) | |
tree | 4d9dc04ea9c0812247cbaee28cadd0131a9414e6 /derive/src | |
parent | 09ef6785607e813b7a80edd8e3dd52fdf65baca1 (diff) | |
download | mt_ser-2a08d84120643db61cce60da67b012ea34e460df.tar.xz |
Don't require repr for custom enum implementations
Diffstat (limited to 'derive/src')
-rw-r--r-- | derive/src/lib.rs | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/derive/src/lib.rs b/derive/src/lib.rs index 5f301e9..82d9644 100644 --- a/derive/src/lib.rs +++ b/derive/src/lib.rs @@ -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)] }); |