RUST · CLOSURE
클로저 캡처와 Fn 트레이트 결정표
클로저가 환경 값을 읽기만 하는지, 바꾸는지, 소유권을 가져가는지에 따라 구현되는 Fn 계열 트레이트가 달라집니다.
캡처 결정 흐름
Fn
읽기만 함
불변 참조로 캡처하고 Fn으로 여러 번 호출 가능합니다.
값 변경
가변 참조가 필요해 FnMut이 됩니다.
소유권 이동
값을 소비하면 FnOnce만 보장됩니다.
move
환경 값을 클로저 안으로 옮기도록 강제합니다.
호출 위치
스레드나 반환 클로저에서 수명 문제를 줄입니다.
읽기
→
변경
→
이동
→
move
→
호출
선택 기준
capture
Fn
환경을 읽기만 하면 여러 곳에서 반복 호출하기 좋습니다.
FnMut
상태를 누적하거나 변경하는 클로저에 필요합니다.
FnOnce
캡처한 값을 소비하면 한 번만 호출할 수 있습니다.
move 클로저
새 스레드로 넘길 때 소유권을 명확히 옮깁니다.