Somewhat related to the topic, but I’d like to chime in: I’m working on a new channel that allows sharing both Senders and Receivers. It is still a work-in-progress, but will be finished soon and moved into Crossbeam.
To have a taste of its features, take a look at this example, where I converted a program in Go written in CSP-style into Rust.
Here’s what else it can do.