std.ArrayHashMap: add init function

for when you have keys and values array
This commit is contained in:
Andrew Kelley 2023-11-04 15:46:30 -07:00
parent 8bd01d2d9b
commit 802c82b072

View file

@ -574,6 +574,19 @@ pub fn ArrayHashMapUnmanaged(
}; };
} }
pub fn init(allocator: Allocator, key_list: []const K, value_list: []const V) !Self {
var self: Self = .{};
try self.entries.resize(allocator, key_list.len);
errdefer self.entries.deinit(allocator);
@memcpy(self.keys(), key_list);
if (@sizeOf(V) != 0) {
assert(key_list.len == value_list.len);
@memcpy(self.values(), value_list);
}
try self.reIndex(allocator);
return self;
}
/// Frees the backing allocation and leaves the map in an undefined state. /// Frees the backing allocation and leaves the map in an undefined state.
/// Note that this does not free keys or values. You must take care of that /// Note that this does not free keys or values. You must take care of that
/// before calling this function, if it is needed. /// before calling this function, if it is needed.