RUST · CLOSURE

클로저 캡처와 Fn 트레이트 결정표

클로저가 환경 값을 읽기만 하는지, 바꾸는지, 소유권을 가져가는지에 따라 구현되는 Fn 계열 트레이트가 달라집니다.

캡처 결정 흐름

Fn
읽기만 함불변 참조로 캡처하고 Fn으로 여러 번 호출 가능합니다.
값 변경가변 참조가 필요해 FnMut이 됩니다.
소유권 이동값을 소비하면 FnOnce만 보장됩니다.
move환경 값을 클로저 안으로 옮기도록 강제합니다.
호출 위치스레드나 반환 클로저에서 수명 문제를 줄입니다.
읽기변경이동move호출

선택 기준

capture
Fn환경을 읽기만 하면 여러 곳에서 반복 호출하기 좋습니다.
FnMut상태를 누적하거나 변경하는 클로저에 필요합니다.
FnOnce캡처한 값을 소비하면 한 번만 호출할 수 있습니다.
move 클로저새 스레드로 넘길 때 소유권을 명확히 옮깁니다.