mirror of
https://github.com/ziglang/zig.git
synced 2025-12-15 02:33:07 +00:00
parent
4d9377923d
commit
b86aadfa38
@ -275,7 +275,9 @@ pub fn zeroes(comptime T: type) T {
|
|||||||
} else {
|
} else {
|
||||||
var structure: T = undefined;
|
var structure: T = undefined;
|
||||||
inline for (struct_info.fields) |field| {
|
inline for (struct_info.fields) |field| {
|
||||||
@field(structure, field.name) = zeroes(@TypeOf(@field(structure, field.name)));
|
if (!field.is_comptime) {
|
||||||
|
@field(structure, field.name) = zeroes(@TypeOf(@field(structure, field.name)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return structure;
|
return structure;
|
||||||
}
|
}
|
||||||
@ -342,6 +344,8 @@ test "mem.zeroes" {
|
|||||||
try testing.expect(a.y == 10);
|
try testing.expect(a.y == 10);
|
||||||
|
|
||||||
const ZigStruct = struct {
|
const ZigStruct = struct {
|
||||||
|
comptime comptime_field: u8 = 5,
|
||||||
|
|
||||||
integral_types: struct {
|
integral_types: struct {
|
||||||
integer_0: i0,
|
integer_0: i0,
|
||||||
integer_8: i8,
|
integer_8: i8,
|
||||||
@ -376,6 +380,7 @@ test "mem.zeroes" {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const b = zeroes(ZigStruct);
|
const b = zeroes(ZigStruct);
|
||||||
|
try testing.expectEqual(@as(u8, 5), b.comptime_field);
|
||||||
try testing.expectEqual(@as(i8, 0), b.integral_types.integer_0);
|
try testing.expectEqual(@as(i8, 0), b.integral_types.integer_0);
|
||||||
try testing.expectEqual(@as(i8, 0), b.integral_types.integer_8);
|
try testing.expectEqual(@as(i8, 0), b.integral_types.integer_8);
|
||||||
try testing.expectEqual(@as(i16, 0), b.integral_types.integer_16);
|
try testing.expectEqual(@as(i16, 0), b.integral_types.integer_16);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user