Improve opaque error message for Handler::layer
#1336
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.
Layers applied with
Hander::layer
must implementClone
. If they don't you get the familiar "Handler not implemented ..." error. Other methods likeRouter::layer
doesn't require this and its pretty confusing why a layer would work on a router but not on a handler. I just spent an hour helping someone on Discord track this down 😅The reason the
Handler::layer
requiresL: Clone
is that layers can only be applied toService
s and turning aHandler
into aService
requires the state. We don't have the state yet inHandler::layer
so instead we store the layer with the handler and apply the layer in<Layered as Handler>::call
.