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.
There are a couple of challenges with the existing per-child-widget message handler system:
List
cannot work in the same wayInstead, this attempts to bind handlers based on the message type by requiring parent widgets implement a new
OnMessage
trait. But first we need a couple of auto-implementations:VoidMsg
message type should be supported automaticallyProblem: these generic implementations overlap. Except: we already worked around this via
derive(VoidMsg)
: each viable message type supportsFrom<VoidMsg>
, thus we can implement a rule for anyM: From<N>
whereM
andN
are the parent's and child's message types respectively.Problem: implementing a specific handler which is not covered by the above rule is now reported as a conflict: rust-lang/rust#90587. This blocks further progress here.