fix enum discriminants not being included in the hash
This commit is contained in:
@@ -35,6 +35,11 @@ pub fn derive_hash2(input: TokenStream) -> TokenStream {
|
||||
}
|
||||
}
|
||||
Data::Enum(data) => {
|
||||
// Hash the discriminant first to ensure different variants hash differently
|
||||
let discriminant_hash = quote! {
|
||||
core::mem::discriminant(self).hash(state);
|
||||
};
|
||||
|
||||
let variants = data.variants.iter().map(|variant| {
|
||||
let variant_name = &variant.ident;
|
||||
match &variant.fields {
|
||||
@@ -69,8 +74,9 @@ pub fn derive_hash2(input: TokenStream) -> TokenStream {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
quote! {
|
||||
#discriminant_hash
|
||||
match self {
|
||||
#(#variants)*
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user