You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is because, if the whole program consist by try_send and recv, it should be able to send/recv. But in Async Rust, even if the send puts the value to an intermediate buffer, and wakes up the recv task, the recv task may not be scheduled or run.
So, I'd suggest people who wants to use a rendezvous mpsc channel just create a bounded channel with buffer = 1. The difference is tiny and can be ignored.
Superseded by #167. The new design treats rendezvous as an explicit handoff contract: send completes only after a receive operation accepts the value, which is distinct from enqueueing into a capacity-one buffer. Keeping this issue closed in favor of the broader design tracker.
Activity
tisonkun commentedon Jul 8, 2025
After a closer look, in Async Rust, this is somehow the same as
buffer = 1.Take futures-channel's impl as an example:
This is because, if the whole program consist by try_send and recv, it should be able to send/recv. But in Async Rust, even if the send puts the value to an intermediate buffer, and wakes up the recv task, the recv task may not be scheduled or run.
So, I'd suggest people who wants to use a rendezvous mpsc channel just create a bounded channel with buffer = 1. The difference is tiny and can be ignored.
tisonkun commentedon Aug 21, 2026
Superseded by #167. The new design treats rendezvous as an explicit handoff contract: send completes only after a receive operation accepts the value, which is distinct from enqueueing into a capacity-one buffer. Keeping this issue closed in favor of the broader design tracker.