#import "modules/std.sx"; Shape :: enum { circle: f32; rect: struct { w, h: f32;}; none; } main :: () { // Construction with .variant(payload) s :Shape = .circle(3.14); print("circle: {}\n", s); // Payload access r := s.circle; print("radius: {}\n", r); // Void variant via enum literal s = .none; print("none: {}\n", s); // Reassign with payload s = .rect(.{4, 2}); print("rect: {}\n", s); // Explicit prefix construction sh :Shape = Shape.circle(2.71); print("sh: {}\n", sh); // Field access on second variable sh2 :Shape = .rect(.{2,4}); val := sh2.rect; print("rect val: {}\n", val); // Match on enum if sh2 == { case .circle: print("matched circle\n"); case .rect: print("matched rect\n"); case .none: print("matched none\n"); } cs := if sh2 == { case .circle: 1; case .rect: 2; case .none: 3; } print("case : {}", cs); }