RUST · THREADPOOL

`join` 전에 핸들을 필드 밖으로 옮기기

JoinHandle::join은 핸들을 소비하므로, 가변 참조만 가진 Worker 필드에서 바로 호출할 수 없습니다.

Drop
보관

Some(handle)

실행 중인 워커는 스레드 핸들을 Option 안에 보관합니다.

이동

take()

Some 값을 꺼내고 필드 자리에는 None을 남겨 구조체를 유효하게 둡니다.

정리

join()

꺼낸 핸들의 소유권을 넘겨 작업 스레드가 끝날 때까지 기다립니다.

왜 필요한가

필드에 직접 있는 JoinHandle을 이동하면 대여 중인 Worker의 일부를 빼내는 셈입니다. Option::take는 그 자리를 None으로 채워 이 이동을 명시적으로 안전하게 만듭니다.