is_closed
for mpsc::{Receiver, UnboundedReceiver}
#5032
Closed
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's a use case for channels that wants to know up-front (before calling
recv
ortry_recv
)that there's a possibility of new messages coming in. Make it possible to check whether the channel is closed and empty, which implies that there will never be new messages on this channel.Fixes: #4638
Motivation
Taken from #4638 - if you're building a pipe-type abstraction over an MPSC channel carrying byte buffers, then it's useful to know that the pipe is now terminated without having to handle the possibility of data arriving when you do the check.
Solution
Refactor so that I can see if the current block is closed without reading the value. I believe this avoids safety issues, since I never go near the actual data.
This is incomplete as-is, since it only allows you to look to see if the channel is closed, not check to see if there's data to be read, or to wait until data is available. I am working on those two items, to let you build a useful
TcpStream
equivalent from an MPSC channel.