From d9ffe3263a8d50114376b3eebaf6ab634332e2e2 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Thu, 13 Feb 2025 12:31:39 -0800 Subject: [PATCH] add isContainer --- src/isContainer.zig | 32 ++++++++++++++++++++++++++++++++ src/lib.zig | 1 + 2 files changed, 33 insertions(+) create mode 100644 src/isContainer.zig diff --git a/src/isContainer.zig b/src/isContainer.zig new file mode 100644 index 0000000000000000000000000000000000000000..3adf2c33e9c275cfa0ffc659df25f3c832583471 --- /dev/null +++ b/src/isContainer.zig @@ -0,0 +1,32 @@ +const std = @import("std"); +const string = []const u8; +const extras = @import("./lib.zig"); + +pub fn isContainer(comptime T: type) bool { + return switch (@typeInfo(T)) { + .Struct, + .Union, + .Enum, + .Opaque, + => true, + else => false, + }; +} + +test { + const TestStruct = struct {}; + const TestUnion = union { + a: void, + }; + const TestEnum = enum { + A, + B, + }; + const TestOpaque = opaque {}; + + try std.testing.expect(isContainer(TestStruct)); + try std.testing.expect(isContainer(TestUnion)); + try std.testing.expect(isContainer(TestEnum)); + try std.testing.expect(isContainer(TestOpaque)); + try std.testing.expect(!isContainer(u8)); +} diff --git a/src/lib.zig b/src/lib.zig index 63bfa8efd344049127924efd0c29342726b3f669..3e34729afb6ade7b2e0e2c4c10245bc3eede9f8a 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -102,3 +102,4 @@ pub usingnamespace @import("./matchesNone.zig"); pub usingnamespace @import("./indexOfSlice.zig"); pub usingnamespace @import("./mapBy.zig"); pub usingnamespace @import("./lessThanBy.zig"); +pub usingnamespace @import("./isContainer.zig"); -- 2.54.0