fat struct style guide?
monkyyy
crazymonkyyy at gmail.com
Tue Feb 24 22:27:32 UTC 2026
On Tuesday, 24 February 2026 at 22:10:08 UTC, Kapendev wrote:
> On Tuesday, 24 February 2026 at 21:56:47 UTC, monkyyy wrote:
>> [...]
>
> ```d
> // Tagged union.
> struct Base { int x, y, w, h; ubyte type; }
> struct Foo { Base base; int hp; }
> struct Goo { Base base; string name; }
> union Entity1 { Base base; Foo foo; Goo goo; }
>
> // MEGA struct.
> struct Entity2 {
> int x, y, w, h;
> int hp;
> string name;
> ubyte type;
> }
>
> void main() {
> auto e1 = Entity1();
> e1.base.x += 1; // Can just do that without checking or
> void magic.
> auto e2 = Entity2();
> e2.x += 2; // It's the same thing.
>
> import std.stdio;
> writeln("Entity1 size: ", e1.sizeof);
> writeln("Entity2 size: ", e2.sizeof);
> }
> ```
Thats a compromise between fat structs and components, everywhere
you have base it acts fat
More information about the Digitalmars-d-learn
mailing list