diff --git a/sqlx-macros/src/derives/decode.rs b/sqlx-macros/src/derives/decode.rs index fa4604ef..23c6427d 100644 --- a/sqlx-macros/src/derives/decode.rs +++ b/sqlx-macros/src/derives/decode.rs @@ -27,9 +27,20 @@ pub fn expand_derive_decode(input: &DeriveInput) -> syn::Result expand_derive_decode_struct(input, named), - _ => Err(syn::Error::new_spanned( + Data::Union(_) => Err(syn::Error::new_spanned(input, "unions are not supported")), + Data::Struct(DataStruct { + fields: Fields::Unnamed(..), + .. + }) => Err(syn::Error::new_spanned( input, - "expected a tuple struct with a single field", + "structs with zero or more than one unnamed field are not supported", + )), + Data::Struct(DataStruct { + fields: Fields::Unit, + .. + }) => Err(syn::Error::new_spanned( + input, + "unit structs are not supported", )), } } diff --git a/sqlx-macros/src/derives/encode.rs b/sqlx-macros/src/derives/encode.rs index fc1d32c1..1e0c2caa 100644 --- a/sqlx-macros/src/derives/encode.rs +++ b/sqlx-macros/src/derives/encode.rs @@ -28,9 +28,20 @@ pub fn expand_derive_encode(input: &DeriveInput) -> syn::Result expand_derive_encode_struct(input, named), - _ => Err(syn::Error::new_spanned( + Data::Union(_) => Err(syn::Error::new_spanned(input, "unions are not supported")), + Data::Struct(DataStruct { + fields: Fields::Unnamed(..), + .. + }) => Err(syn::Error::new_spanned( input, - "expected a tuple struct with a single field", + "structs with zero or more than one unnamed field are not supported", + )), + Data::Struct(DataStruct { + fields: Fields::Unit, + .. + }) => Err(syn::Error::new_spanned( + input, + "unit structs are not supported", )), } } diff --git a/sqlx-macros/src/derives/has_sql_type.rs b/sqlx-macros/src/derives/has_sql_type.rs index 64da9ae1..8251d500 100644 --- a/sqlx-macros/src/derives/has_sql_type.rs +++ b/sqlx-macros/src/derives/has_sql_type.rs @@ -27,9 +27,20 @@ pub fn expand_derive_has_sql_type(input: &DeriveInput) -> syn::Result expand_derive_has_sql_type_struct(input, named), - _ => Err(syn::Error::new_spanned( + Data::Union(_) => Err(syn::Error::new_spanned(input, "unions are not supported")), + Data::Struct(DataStruct { + fields: Fields::Unnamed(..), + .. + }) => Err(syn::Error::new_spanned( input, - "expected a tuple struct with a single field", + "structs with zero or more than one unnamed field are not supported", + )), + Data::Struct(DataStruct { + fields: Fields::Unit, + .. + }) => Err(syn::Error::new_spanned( + input, + "unit structs are not supported", )), } }