fn vs closure

함수 포인터와 클로저 반환 기준

함수 포인터와 클로저는 호출 가능한 값이지만, 캡처 여부와 크기 결정 방식이 다릅니다.

판단 기준

주변 값을 캡처하는가, 하나의 구체 타입으로 반환 가능한가

fn

캡처 없는 함수는 fn 포인터로 넘길 수 있습니다.

closure

주변 값을 캡처하면 클로저 타입이 됩니다.

impl Trait

구체 타입 하나를 숨겨 반환할 때 사용합니다.

Box<dyn>

서로 다른 클로저 타입을 하나로 다룰 때 동적 디스패치를 씁니다.