Quick and dirty limited tagged union, because std.variant can't do recursive definitions
Retrieving the correct type is enforced by in contracts, so AssertErrors are thrown
if the wrong type is attempted, and who knows what you'll get if you compile in release mode.
Quick and dirty limited tagged union, because std.variant can't do recursive definitions
Retrieving the correct type is enforced by in contracts, so AssertErrors are thrown if the wrong type is attempted, and who knows what you'll get if you compile in release mode.