| author | |
| committer | |
| log | d9ffe3263a8d50114376b3eebaf6ab634332e2e2 |
| tree | 6ecd44873319cfe7920ddf209bea4967510a99f3 |
| parent | f4d577e8a7d0cd5e70d8ebceb1b813ddc57ce665 |
2 files changed, 33 insertions(+), 0 deletions(-)
src/isContainer.zig created+32| ... | @@ -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 | } | ||
src/lib.zig+1| ... | @@ -102,3 +102,4 @@ pub usingnamespace @import("./matchesNone.zig"); | ... | @@ -102,3 +102,4 @@ pub usingnamespace @import("./matchesNone.zig"); |
| 102 | pub usingnamespace @import("./indexOfSlice.zig"); | 102 | pub usingnamespace @import("./indexOfSlice.zig"); |
| 103 | pub usingnamespace @import("./mapBy.zig"); | 103 | pub usingnamespace @import("./mapBy.zig"); |
| 104 | pub usingnamespace @import("./lessThanBy.zig"); | 104 | pub usingnamespace @import("./lessThanBy.zig"); |
| 105 | pub usingnamespace @import("./isContainer.zig"); |