Commit 8436134499

Andrew Kelley <andrew@ziglang.org>
2021-01-17 06:49:20
std.ArrayHashMap: add "AssertDiscard" function variants
* Add `swapRemoveAssertDiscard` * Add `orderedRemoveAssertDiscard` * Deprecate `removeAssertDiscard`
1 parent 1f65828
Changed files (1)
lib/std/array_hash_map.zig
@@ -239,12 +239,23 @@ pub fn ArrayHashMap(
             return self.unmanaged.orderedRemove(key);
         }
 
-        /// Asserts there is an `Entry` with matching key, deletes it from the hash map,
-        /// and discards it.
+        /// TODO: deprecated: call swapRemoveAssertDiscard instead.
         pub fn removeAssertDiscard(self: *Self, key: K) void {
             return self.unmanaged.removeAssertDiscard(key);
         }
 
+        /// Asserts there is an `Entry` with matching key, deletes it from the hash map
+        /// by swapping it with the last element, and discards it.
+        pub fn swapRemoveAssertDiscard(self: *Self, key: K) void {
+            return self.unmanaged.swapRemoveAssertDiscard(key);
+        }
+
+        /// Asserts there is an `Entry` with matching key, deletes it from the hash map
+        /// by by shifting all elements forward thereby maintaining the current ordering.
+        pub fn orderedRemoveAssertDiscard(self: *Self, key: K) void {
+            return self.unmanaged.orderedRemoveAssertDiscard(key);
+        }
+
         pub fn items(self: Self) []Entry {
             return self.unmanaged.items();
         }
@@ -602,12 +613,23 @@ pub fn ArrayHashMapUnmanaged(
             return self.removeInternal(key, .ordered);
         }
 
-        /// Asserts there is an `Entry` with matching key, deletes it from the hash map,
-        /// and discards it.
+        /// TODO deprecated: call swapRemoveAssertDiscard instead.
         pub fn removeAssertDiscard(self: *Self, key: K) void {
+            return self.swapRemoveAssertDiscard(key);
+        }
+
+        /// Asserts there is an `Entry` with matching key, deletes it from the hash map
+        /// by swapping it with the last element, and discards it.
+        pub fn swapRemoveAssertDiscard(self: *Self, key: K) void {
             assert(self.swapRemove(key) != null);
         }
 
+        /// Asserts there is an `Entry` with matching key, deletes it from the hash map
+        /// by by shifting all elements forward thereby maintaining the current ordering.
+        pub fn orderedRemoveAssertDiscard(self: *Self, key: K) void {
+            assert(self.orderedRemove(key) != null);
+        }
+
         pub fn items(self: Self) []Entry {
             return self.entries.items;
         }