const std = @import("std"); pub const Entity = struct { id: usize, }; pub const EntityCollection = struct { allocator: std.mem.Allocator, next_id: usize, entities: std.AutoHashMap(usize, Entity), pub fn addEntity(self: *EntityCollection) !usize { try self.entities.put(self.next_id, .{ .id = self.next_id, }); self.next_id += 1; return self.next_id - 1; } pub fn init(allocator: std.mem.Allocator) EntityCollection { return .{ .allocator = allocator, .next_id = 0, .entities = std.AutoHashMap(usize, Entity).init(allocator), }; } pub fn deinit(self: *EntityCollection) void { self.entities.deinit(); } }; test "create entities" { try std.testing.expect(true); var ec = EntityCollection.init(std.testing.allocator); defer ec.deinit(); for (0..128) |i| { const id = ec.addEntity(); try std.testing.expectEqual(i, id); } }