Make ContextId implement Hash and simplify the code #377
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.
I thought it would be a good idea to split up #374 into smaller and self-contained parts that are easier to digest and make sense of. Here is the first such PR. It passes
and I know from working with the referenced PR that the code is very sensitive, and the slightest mistake will practically always make at least one test fail. So that all tests pass gives good confidence that the code is in order.
As for the change itself; making
ContextId
implementHash
allows us to make the code simpler and clearer. Most importantly:HashSet<usize>
. We can instead passaround the semantically much clearer
HashSet<ContextId>
,But I also take the opportunity to:
Remove the
ContextId::index()
getter.ContextId
shall be seen as aprimitive that we pass around, rather than something with getters.
Stop using
ContextId::new()
. The way we use it, it is just boilerplate.(On a related note: Long-term, we should even remove it from the public API. Clients should never
create their own
ContextId
s.)