fn closure

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

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

fn캡처 없음

함수 주소 전달

Fn읽기 캡처

여러 번 호출

FnMut수정 캡처

가변 호출

FnOnce소비 캡처

한 번 호출

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

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