closure

클로저는 호출 코드와 함께 필요한 환경 값을 보관한다

함수처럼 호출되지만 정의된 위치의 값을 빌리거나, 수정하거나, 옮겨서 나중에 실행할 수 있다.

Fn읽기 캡처

여러 번 호출 가능

FnMut수정 캡처

호출에 mut 필요

FnOnce소유권 이동

한 번만 호출 가능

구분의미판단
읽기만 함불변 borrowFn
캡처 값을 바꿈가변 borrowFnMut
캡처 값을 소비moveFnOnce
지연 실행저장 후 나중에 호출클로저가 유용한 지점

핵심 클로저의 종류는 문법 모양보다 캡처한 값을 어떻게 쓰는지로 결정된다.