aboutsummaryrefslogtreecommitdiff
path: root/src/global.zig
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/global.zig16
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();
+}