Use hashbrown::HashSet instead of ahash::HashSet #12951
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
In the
target_transpiler/mod.rs
module we were using ahash::HashSet for a hash set implementation, but the rest of Qiskit has standardized on using hashbrown for theHashSet
andHashMap
types. Hashbrown uses ahash for it's hashing algorithm but it also provides other advantages. To ensure that hash sets are compatible across the library we should be using the same library for everything. To support this goal, this commit also adds a clippy rule that raises a warning if the std library hashmap or hashset is used, or the versions from ahash. This means with our current dependency set the only allowed hashset types arehashbrown::HashMap
/HashSet
andindexmap::IndexMap
/IndexSet
(for where we need to maintain insertion order). Ideally we'd have a rule that forces the use of ahash withIndexMap
andIndexSet
(see #12935) but I don't think clippy exposes an option to enable something like that.Details and comments