fn 포인터는 캡처가 없고 클로저 트레이트는 캡처 방식으로 갈린다
함수 포인터는 환경을 들지 않는 값이고, 클로저는 읽기·수정·소비 캡처에 따라 Fn 계열 트레이트를 구현한다.
함수 주소 전달
여러 번 호출
가변 호출
한 번 호출
| 구분 | 의미 | 판단 |
|---|---|---|
| API가 fn을 받음 | 일반 함수와 캡처 없는 클로저 | 가장 제한적 |
| API가 Fn을 받음 | fn도 전달 가능 | 더 유연 |
| 상태 변경 필요 | FnMut | 호출자가 mut 보유 |
| 값 소비 | FnOnce | 콜백 한 번 실행 |
핵심 호출 모델은 “무엇을 캡처하는가”가 어떤 트레이트로 호출 가능한지를 정한다.