| ... | ... | @@ -0,0 +1,32 @@ |
| 1 | const std = @import("std"); |
| 2 | const string = []const u8; |
| 3 | const extras = @import("./lib.zig"); |
| 4 | |
| 5 | pub fn isContainer(comptime T: type) bool { |
| 6 | return switch (@typeInfo(T)) { |
| 7 | .Struct, |
| 8 | .Union, |
| 9 | .Enum, |
| 10 | .Opaque, |
| 11 | => true, |
| 12 | else => false, |
| 13 | }; |
| 14 | } |
| 15 | |
| 16 | test { |
| 17 | const TestStruct = struct {}; |
| 18 | const TestUnion = union { |
| 19 | a: void, |
| 20 | }; |
| 21 | const TestEnum = enum { |
| 22 | A, |
| 23 | B, |
| 24 | }; |
| 25 | const TestOpaque = opaque {}; |
| 26 | |
| 27 | try std.testing.expect(isContainer(TestStruct)); |
| 28 | try std.testing.expect(isContainer(TestUnion)); |
| 29 | try std.testing.expect(isContainer(TestEnum)); |
| 30 | try std.testing.expect(isContainer(TestOpaque)); |
| 31 | try std.testing.expect(!isContainer(u8)); |
| 32 | } |