| ... | ... | @@ -35,8 +35,8 @@ pub fn EnumFieldStruct(comptime E: type, comptime Data: type, comptime field_def |
| 35 | 35 | pub inline fn valuesFromFields(comptime E: type, comptime fields: []const EnumField) []const E { |
| 36 | 36 | comptime { |
| 37 | 37 | var result: [fields.len]E = undefined; |
| 38 | | for (fields, 0..) |f, i| { |
| 39 | | result[i] = @field(E, f.name); |
| 38 | for (&result, fields) |*r, f| { |
| 39 | r.* = @enumFromInt(f.value); |
| 40 | 40 | } |
| 41 | 41 | return &result; |
| 42 | 42 | } |
| ... | ... | @@ -1534,3 +1534,13 @@ test "std.enums.EnumIndexer empty" { |
| 1534 | 1534 | try testing.expectEqual(E, Indexer.Key); |
| 1535 | 1535 | try testing.expectEqual(0, Indexer.count); |
| 1536 | 1536 | } |
| 1537 | |
| 1538 | test "enumValues" { |
| 1539 | const E = enum { |
| 1540 | X, |
| 1541 | Y, |
| 1542 | Z, |
| 1543 | pub const X = 1; |
| 1544 | }; |
| 1545 | try testing.expectEqualSlices(E, &.{ .X, .Y, .Z }, values(E)); |
| 1546 | } |