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.
Since rust-lang/rust#54383 was merged the
Future
andStream
traits have become object safe 🎉, here's a test playground showing thatPin<Box<dyn Future>>
works.The only remaining reason for having
FutureObj
exist is to support storing futures that are being spawned in custom "heap" allocations while keepingSpawn
a non-generic trait.I think
StreamObj
can probably be dropped, it seems likely that all current use-cases should work fine with using an explicit storage type,Box<dyn Stream>
,Pin<Box<dyn Stream>>
orSomeCustomHeapStore<dyn Stream>
should all work, and if a user does need to be abstract over storage they likely already have some way to do this themselves.r? @cramertj