Properly support EnumItem variants in hashing and variant_eq (#1165)

This commit is contained in:
Micah
2025-11-19 19:18:14 -08:00
committed by GitHub
parent 9b5a07191b
commit 2b47861a4f
2 changed files with 5 additions and 0 deletions

View File

@@ -85,6 +85,10 @@ pub fn hash_variant(hasher: &mut Hasher, value: &Variant) {
hash!(hasher, s.as_bytes()) hash!(hasher, s.as_bytes())
} }
Variant::Enum(e) => n_hash!(hasher, e.to_u32()), Variant::Enum(e) => n_hash!(hasher, e.to_u32()),
Variant::EnumItem(e) => {
hash!(hasher, e.ty.as_bytes());
n_hash!(hasher, e.value);
}
Variant::Faces(f) => hash!(hasher, &[f.bits()]), Variant::Faces(f) => hash!(hasher, &[f.bits()]),
Variant::Float32(n) => n_hash!(hasher, round!(*n)), Variant::Float32(n) => n_hash!(hasher, round!(*n)),
Variant::Float64(n) => n_hash!(hasher, round!(n)), Variant::Float64(n) => n_hash!(hasher, round!(n)),

View File

@@ -71,6 +71,7 @@ pub fn variant_eq(variant_a: &Variant, variant_b: &Variant) -> bool {
(Variant::Content(a), Variant::Content(b)) => a == b, (Variant::Content(a), Variant::Content(b)) => a == b,
(Variant::ContentId(a), Variant::ContentId(b)) => a == b, (Variant::ContentId(a), Variant::ContentId(b)) => a == b,
(Variant::Enum(a), Variant::Enum(b)) => a == b, (Variant::Enum(a), Variant::Enum(b)) => a == b,
(Variant::EnumItem(a), Variant::EnumItem(b)) => a == b,
(Variant::Faces(a), Variant::Faces(b)) => a == b, (Variant::Faces(a), Variant::Faces(b)) => a == b,
(Variant::Float32(a), Variant::Float32(b)) => approx_eq!(f32, *a, *b), (Variant::Float32(a), Variant::Float32(b)) => approx_eq!(f32, *a, *b),
(Variant::Float64(a), Variant::Float64(b)) => approx_eq!(f64, *a, *b), (Variant::Float64(a), Variant::Float64(b)) => approx_eq!(f64, *a, *b),