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