My biggest problem with channels was communicating between sync threads and async tasks. For example from an async world of socket communication with Tokio to to the sync world of the NATS crate. I'm sure there are many other such cases.
Does Postage do anything to address that sync/async divide?
At the moment, the channels only work on async executors. But I think I could implement some kind of blocking send/recv at the Sink/Stream trait level. I'd just need a way to suspend a thread until a Waker is called.
The Tokio mpsc channel's blocking send and receives just wrap the ordinary method in something equivalent to futures::executor::block_on. You could do the same, or look inside its impl (it uses park from std::thread)