commit 8436134499c623485aeb20374a9928685db4211e (tree)
parent 1f65828ec6caa7697b26d9e919112aa1715b57bc
Author: Andrew Kelley <andrew@ziglang.org>
Date: Sat, 16 Jan 2021 22:49:20 -0700
std.ArrayHashMap: add "AssertDiscard" function variants
* Add `swapRemoveAssertDiscard`
* Add `orderedRemoveAssertDiscard`
* Deprecate `removeAssertDiscard`
Diffstat:
1 file changed, 26 insertions(+), 4 deletions(-)
diff --git a/lib/std/array_hash_map.zig b/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;
}