Callable

fn 포인터와 클로저 호출 모델

fn은 캡처가 없는 함수 포인터이고, 클로저 트레이트는 캡처 방식에 따라 Fn, FnMut, FnOnce로 갈린다.

호출 가능한 값을 받는 기준

call traits

fn 포인터

일반 함수를 값처럼 전달하며 세 클로저 트레이트를 모두 구현한다.

Fn

환경을 읽기만 하는 클로저를 여러 번 호출할 수 있다.

FnMut

캡처한 상태를 바꾸려면 가변 호출 권한이 필요하다.

FnOnce

캡처한 값을 소비하면 한 번만 호출할 수 있다.

function itemfn pointerclosuretrait boundcall
읽는 법

API가 콜백을 받는다면 캡처와 호출 횟수를 기준으로 가장 좁은 트레이트를 고른다. fn은 캡처 없는 특수한 경우다.