클로저를 받는 함수는 호출 방식으로 계약을 드러낸다

클로저 문법을 보기 전에 함수가 몇 번 호출하고, 캡처 값을 바꿀 수 있는지, 결과가 언제 필요한지부터 확인합니다.

콜백의 동작가장 약한 바운드를 선택
환경을 읽기만Fn
캡처 값을 변경FnMut
값을 밖으로 이동FnOnce
입력

환경을 읽는가

읽기만 하면 공유 참조로 충분해 여러 호출과 병렬 읽기에 유리합니다.

Fn
상태

누적값을 바꾸는가

카운터 증가처럼 외부 상태를 바꾸면 가변 캡처가 필요합니다.

FnMut
소비

값을 밖으로 옮기는가

캡처 값을 소비하면 같은 클로저를 다시 실행할 수 없습니다.

FnOnce
호출

몇 번 실행되는가

최대 한 번이면 넓게 받고, 원소마다 호출하면 반복 호출 가능해야 합니다.

where F: ...