std.meta.eql: use == directly when comparing packed structs (#21982)

This commit is contained in:
Fri3dNstuff 2024-11-25 00:29:44 +02:00 committed by GitHub
parent c894ac09a3
commit b2030cb9ab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -737,13 +737,15 @@ test TagPayload {
try testing.expect(MovedEvent == @TypeOf(e.Moved));
}
/// Compares two of any type for equality. Containers are compared on a field-by-field basis,
/// where possible. Pointers are not followed.
/// Compares two of any type for equality. Containers that do not support comparison
/// on their own are compared on a field-by-field basis. Pointers are not followed.
pub fn eql(a: anytype, b: @TypeOf(a)) bool {
const T = @TypeOf(a);
switch (@typeInfo(T)) {
.@"struct" => |info| {
if (info.layout == .@"packed") return a == b;
inline for (info.fields) |field_info| {
if (!eql(@field(a, field_info.name), @field(b, field_info.name))) return false;
}