authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2025-02-13 12:31:39 -08:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2025-02-13 12:31:39 -08:00
logd9ffe3263a8d50114376b3eebaf6ab634332e2e2
tree6ecd44873319cfe7920ddf209bea4967510a99f3
parentf4d577e8a7d0cd5e70d8ebceb1b813ddc57ce665

add isContainer


2 files changed, 33 insertions(+), 0 deletions(-)

src/isContainer.zig created+32
...@@ -0,0 +1,32 @@
1const std = @import("std");
2const string = []const u8;
3const extras = @import("./lib.zig");
4
5pub 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
16test {
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");
102pub usingnamespace @import("./indexOfSlice.zig");102pub usingnamespace @import("./indexOfSlice.zig");
103pub usingnamespace @import("./mapBy.zig");103pub usingnamespace @import("./mapBy.zig");
104pub usingnamespace @import("./lessThanBy.zig");104pub usingnamespace @import("./lessThanBy.zig");
105pub usingnamespace @import("./isContainer.zig");