From 5c1428ea9db6c455fdd36b60fe6cd27b9e8eae4d Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Mon, 11 Dec 2023 16:04:43 -0600 Subject: [PATCH] Add `getPtrConstAssertContains(...)` for compatibility with a `const` `std.EnumMap` This way people can use `const` with a `std.EnumMap` and be able to `getPtrAssertContains(...)` like the would with a mutable `var` instance. Aligns with the existing `getPtr(...)`/`getPtrConst(...)` methods. --- lib/std/enums.zig | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/std/enums.zig b/lib/std/enums.zig index d35ac81c1a..d0eb77e5f9 100644 --- a/lib/std/enums.zig +++ b/lib/std/enums.zig @@ -1086,6 +1086,14 @@ pub fn IndexedMap(comptime I: type, comptime V: type, comptime Ext: ?fn (type) t return &self.values[index]; } + /// Gets the address of the const value associated with a key. + /// The key must be present in the map. + pub fn getPtrConstAssertContains(self: *const Self, key: Key) *const Value { + const index = Indexer.indexOf(key); + assert(self.bits.isSet(index)); + return &self.values[index]; + } + /// Adds the key to the map with the supplied value. /// If the key is already in the map, overwrites the value. pub fn put(self: *Self, key: Key, value: Value) void {