Minimal support for downcasting to a custom transport type #451
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.
This PR is an alternative to the approach in
#432 , based on the comment at
#432 (comment) .
I added methods on
trillium_http::Conn
to get a&Transport
or&mut Transport
.I then added methods on
BoxedTransport
to downcast to a specific typeimplementing
Transport
. I went with downcast methods onBoxedTransport
rather than exposing
as_any()
andas_mut_any()
directly, because the latterwould have been the same amount of code and with a more complex interface.
With both of these changes, given a
trillium::Conn
, you can callconn.inner().transport().downcast_ref()
orconn.inner().transport_mut().downcast_mut()
to get your custom transporttype.
I think this is the minimal amount of support needed to make this possible.