master
 1const Writer = struct {
 2    pub fn printValue(self: *Writer, value: anytype) !void {
 3        switch (@typeInfo(@TypeOf(value))) {
 4            .int => {
 5                return self.writeInt(value);
 6            },
 7            .float => {
 8                return self.writeFloat(value);
 9            },
10            .pointer => {
11                return self.write(value);
12            },
13            else => {
14                @compileError("Unable to print type '" ++ @typeName(@TypeOf(value)) ++ "'");
15            },
16        }
17    }
18
19    fn write(self: *Writer, value: []const u8) !void {
20        _ = self;
21        _ = value;
22    }
23    fn writeInt(self: *Writer, value: anytype) !void {
24        _ = self;
25        _ = value;
26    }
27    fn writeFloat(self: *Writer, value: anytype) !void {
28        _ = self;
29        _ = value;
30    }
31};
32
33// syntax