diff options
Diffstat (limited to '')
-rw-r--r-- | src/global.zig | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/global.zig b/src/global.zig index 7a9ef2657..6135e807d 100644 --- a/src/global.zig +++ b/src/global.zig @@ -380,3 +380,19 @@ pub const HTTPThead = @import("./http_client_async.zig").HTTPThread; pub const Analytics = @import("./analytics/analytics_thread.zig"); pub usingnamespace @import("./tagged_pointer.zig"); + +pub fn once(comptime function: anytype, comptime ReturnType: type) ReturnType { + const Result = struct { + var value: ReturnType = undefined; + var ran = false; + + pub fn execute() ReturnType { + if (ran) return value; + ran = true; + value = function(); + return value; + } + }; + + return Result.execute(); +} |