fn 포인터는 캡처가 없고 클로저 트레이트는 캡처 방식으로 갈린다

함수 포인터는 환경을 들지 않는 값이고, 클로저는 읽기·수정·소비 캡처에 따라 Fn 계열 트레이트를 구현한다.

fn캡처 없음

함수 주소 전달

Fn읽기 캡처

여러 번 호출

FnMut수정 캡처

가변 호출

FnOnce소비 캡처

한 번 호출

구분의미판단
API가 fn을 받음일반 함수와 캡처 없는 클로저가장 제한적
API가 Fn을 받음fn도 전달 가능더 유연
상태 변경 필요FnMut호출자가 mut 보유
값 소비FnOnce콜백 한 번 실행

핵심 호출 모델은 “무엇을 캡처하는가”가 어떤 트레이트로 호출 가능한지를 정한다.