Recently I read The Go memory Model
, Go
make some memory order guarantees on channels,
A send on a channel happens before the corresponding receive from that channel completes.
The closing of a channel happens before a receive that returns a zero value because the channel is closed.
A receive from an unbuffered channel happens before the send on that channel completes.
The k th receive on a channel with capacity C happens before the k + C th send from that channel completes.
Does rust channels(std & crossbeam & futures) have these properties.