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.
While working with this type I noticed a few deficiencies:
First, the initializer takes an opaque type rather than an existential, and while existentials are typically automatically opened, there are cases in which this initializer will fail, e.g.:
We can fix this by updating the initializer to be an
any
already.Second, comparing an
AnyHashableSendable
with anotherAnyHashable
fails because of the underlying type, but there is an underscored public protocol in the standard library we can take advantage of that is called when a hashable type is cast toAnyHashable
, and if we return the base value then things like this start to work:Third, while probably not common in practice, we can box up certain literals into
AnyHashableSendable
automatically, so let's do it. I do not think it's possible to box array or dictionary literals, but we can cover the more common cases.