struct Receiver<T>The single receiving endpoint shared by bounded and unbounded channels.
recv preserves FIFO queue order. Dropping the final receiver drains queued values through typed drop glue and causes later sends to fail or discard their values. Receiver endpoints are intentionally not clonable.
Methods
func recv() -> T?
Receive directly: the queued value, or none once every sender is gone and the queue is drained. Parks between checks; a spurious wake just re-checks.
View Source
pub func recv() -> T? {
loop {
let status = _chan_ctl(handle: self.handle, op: 0)
if status == 0 {
return Optional.some(_chan_take<T>(handle: self.handle))
}
if status == 2 {
return Optional.none
}
'wait(reasons: [WaitReason.recv(self.handle)])
}
}