1
FnOnce
한 번만 부르나요?
기본값 생성, 지연 계산, 소유한 값을 결과로 꺼내는 콜백인가요?
예라면 FnOnce가 충분합니다. 모든 클로저가 최소 한
번은 호출될 수 있기 때문입니다.
클로저를 인수로 받는 함수는 가장 약한 요구부터 고릅니다. 호출 횟수, 내부 변경, 값 소비 여부를 순서대로 보면 됩니다.
기본값 생성, 지연 계산, 소유한 값을 결과로 꺼내는 콜백인가요?
예라면 FnOnce가 충분합니다. 모든 클로저가 최소 한
번은 호출될 수 있기 때문입니다.
카운터 증가, 버퍼 누적처럼 캡처한 값을 수정해야 하나요?
예라면 FnMut을 받습니다. 여러 번 호출하되 내부 상태를
바꿀 수 있어야 합니다.
필터 조건이나 비교 함수처럼 환경을 읽기만 하고 재사용하나요?
예라면 Fn이 가장 좁고 유연합니다. 공유 참조로 여러
곳에서 반복 호출하기 쉽습니다.
Fn을 요구하면 유용한
클로저를 거절할 수 있습니다.
move는 캡처 위치를 바꾸지만 호출 가능 횟수를 직접
정하지 않습니다.
본문이 값을 소비하는지, 변경하는지, 읽기만 하는지가 최종
트레이트를 결정합니다.