master
 1const std = @import("std");
 2const expect = std.testing.expect;
 3
 4const Variant = union(enum) {
 5    int: i32,
 6    boolean: bool,
 7
 8    // void can be omitted when inferring enum tag type.
 9    none,
10
11    fn truthy(self: Variant) bool {
12        return switch (self) {
13            Variant.int => |x_int| x_int != 0,
14            Variant.boolean => |x_bool| x_bool,
15            Variant.none => false,
16        };
17    }
18};
19
20test "union method" {
21    var v1: Variant = .{ .int = 1 };
22    var v2: Variant = .{ .boolean = false };
23    var v3: Variant = .none;
24
25    try expect(v1.truthy());
26    try expect(!v2.truthy());
27    try expect(!v3.truthy());
28}
29
30// test