find_method_for_type
improvements
#6744
Draft
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.
Description
TraitMap::insert
now verifies that type parameters trait constraints are satisfied before throwing a duplicate method error.find_method_for_type
was also changed, so it now checks that trait constraints are satisfied before returning the matched method. It also now does a preemptiveTraitMap::insert_trait_implementation_for_type
this allow us to have:and still find both methods. Before the change, the compiler would pick the second implementation without inserting the first one into the trait map.
It was added to
find_method_for_type
exact matching check that avoidsMultiple applicable items in scope
error for refs and ref must.Updated
find_method_for_type
blanket implementation logic where, when we haveimpl<T> FromBytes for T
andimpl FromBytes for DataPoint
we pick the second implementation.TraitMap::insert_trait_implementation_for_type
now caches the already inserted types to avoid adding multiple times the same types.Checklist
Breaking*
orNew Feature
labels where relevant.