authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-11-27 13:53:39-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-11-27 14:34:08-08:00
logc9c7ede2f9be23fd212d968fbc2fdec6ebefdeeb
tree2e60e8e3b08d0840e350d3d377b95d94d49f2d9d
parent1a99c99ee99fa3ca43935fe7d7d0865145b82d4e

introduce std.ArrayHashMap.reinit


1 files changed, 6 insertions(+), 2 deletions(-)

lib/std/array_hash_map.zig+6-2
...@@ -621,15 +621,19 @@ pub fn ArrayHashMapUnmanaged(...@@ -621,15 +621,19 @@ pub fn ArrayHashMapUnmanaged(
621621
622 pub fn init(allocator: Allocator, key_list: []const K, value_list: []const V) !Self {622 pub fn init(allocator: Allocator, key_list: []const K, value_list: []const V) !Self {
623 var self: Self = .{};623 var self: Self = .{};
624 errdefer self.deinit(allocator);
625 try self.reinit(allocator, key_list, value_list);
626 return self;
627 }
628
629 pub fn reinit(self: *Self, allocator: Allocator, key_list: []const K, value_list: []const V) !void {
624 try self.entries.resize(allocator, key_list.len);630 try self.entries.resize(allocator, key_list.len);
625 errdefer self.entries.deinit(allocator);
626 @memcpy(self.keys(), key_list);631 @memcpy(self.keys(), key_list);
627 if (@sizeOf(V) != 0) {632 if (@sizeOf(V) != 0) {
628 assert(key_list.len == value_list.len);633 assert(key_list.len == value_list.len);
629 @memcpy(self.values(), value_list);634 @memcpy(self.values(), value_list);
630 }635 }
631 try self.reIndex(allocator);636 try self.reIndex(allocator);
632 return self;
633 }637 }
634638
635 /// Frees the backing allocation and leaves the map in an undefined state.639 /// Frees the backing allocation and leaves the map in an undefined state.