This is an Advent of Code solution. Click to reveal!
The cogs are turning...
    
https://zigbin.io/64dd2cClick to copy
https://zigbin.io/64dd2c/runClick to copy
https://zigbin.io/64dd2c/rawClick to copy
const std = @import("std");

fn Wrap(comptime T: type, comptime i: comptime_int) type {
    if (i > 0) {
        return struct {
            i: i32 = i,
            wrapped: Wrap(T, i - 1),
        };
    } else {
        return struct { value: T };
    }
}

pub fn main() void {
    var x: Wrap(i32, 2) = undefined;
}