ahh, I might have misunderstood the question - I wasn't sure if they were asking about Zig in general or my solver in particular.
yes, normal structs would have worked fine - like I said, I was learning Zig in the process, so I was going out of my way to experiment with its unique features.
if you want control over the memory layout you need either a packed struct or an extern struct [0].
0: https://ziglang.org/documentation/0.9.1/#extern-struct