From 40b5ef05c94a7d516c05675a5482a1ac1197dba3 Mon Sep 17 00:00:00 2001 From: abux Date: Fri, 7 Aug 2026 12:54:57 +0100 Subject: [PATCH] Added getHandle to slot_map.zig --- src/slot_map.zig | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/slot_map.zig b/src/slot_map.zig index b23e972..1337be7 100644 --- a/src/slot_map.zig +++ b/src/slot_map.zig @@ -207,6 +207,16 @@ pub fn SlotMap(comptime T: type) type { return self.get(handle) != null; } + /// ---------------------------------------------------- + /// Current valid handle for an index + /// Returns null if out of range or the slot is freed + /// ---------------------------------------------------- + pub fn getHandle(self: *const Self, idx: usize) ?Handle(T) { + if (idx >= self.values.items.len) return null; + if (std.mem.indexOfScalar(u32, self.free_list.items, @intCast(idx)) != null) return null; + return .{ .idx = @intCast(idx), .gen = self.generations.items[idx] }; + } + /// ---------------------------------------------------- /// Number of live entries /// Removed (freed) slots are not counted