sync: Update broadcast::recv to return a named future #6908
+36
−11
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.
Motivation
Closes #6902.
Solution
I only made the minimal change of adding the public
Recv
future type.I also briefly looked into updating
tokio_stream::wrappers::BroadcastStream
to not useReusableBoxFuture
, but it's not as easy as I had hoped as it owns the underlying receiver while borrowing it when being polled - i.e. it's self-referential which is only possible withasync fn
or some extraunsafe
code.For my main use case for this though (in my own crate), the
unsafe
code +impl !Unpin
is likely preferable over the hack I shared in the issue linked above. I don't know whether the same applies totokio-stream
.