Receiver API

recv는 기다리고 try_recv는 확인만 한다

두 메서드는 모두 Result로 채널 상태를 알려줍니다. 차이는 메시지가 아직 없을 때 현재 스레드를 멈추는지에 있습니다.

rx.recv()

blocking

메시지가 올 때까지 현재 스레드를 멈춤

예제 15-8처럼 받은 값을 바로 출력할 때는 기다림 자체가 프로그램의 의도입니다.

closed

송신 단말이 모두 사라지면 에러

더 이상 도착할 값이 없음을 Err로 알려 수신자가 닫힌 채널을 구분하게 합니다.

rx.try_recv()

nonblocking

지금 없으면 즉시 돌아옴

메시지가 없는 동안 계산, 화면 갱신, 다른 입력 확인 같은 일을 계속할 수 있습니다.

loop check

짧게 검사하고 다음 차례를 정함

루프에서 Ok만 처리하고, 값이 없을 때는 다음 검사까지 다른 작업을 배치합니다.

Ok(value) 채널에서 소유권이 이동한 값을 받았습니다.
Err with empty try_recv에서 아직 도착한 메시지가 없습니다.
Err with closed 송신자가 모두 사라져 더 받을 값이 없습니다.
예제와 연결

이 절의 단순한 hi 예제는 recv로 충분합니다. 여러 일을 섞는 수신 루프를 만들 때만 try_recv의 즉시 반환 특성이 의미를 갖습니다.