diff --git a/src/lib.zig b/src/lib.zig index 8ce19859c0cb966f3051dc6be4813d6e5bbceba7..32a8b6df707c50470ce4e8262b6f85d0a110e681 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -665,3 +665,14 @@ pub fn OneBiggerInt(comptime T: type) type { info.Int.bits += 1; return @Type(info); } + +pub fn ReverseFields(comptime T: type) type { + var info = @typeInfo(T).Struct; + const len = info.fields.len; + var fields: [len]std.builtin.Type.StructField = undefined; + for (0..len) |i| { + fields[i] = info.fields[len - 1 - i]; + } + info.fields = &fields; + return @Type(.{ .Struct = info }); +}