환경 값을 불변으로 빌리면 여러 번 호출 가능한 Fn 성격으로 사용할 수 있습니다.
Fn 트레이트
클로저 캡처 방식 읽기
클로저는 주변 값을 불변 참조, 가변 참조, 소유권 이동 중 어떤 방식으로 캡처하는지에 따라 호출 가능한 트레이트가 달라집니다.
캡처한 값을 수정하면 가변 빌림이 필요해 FnMut 조건을 만족하는 API가 필요합니다.
move 클로저나 캡처값을 밖으로 보내는 경우 FnOnce처럼 한 번 호출되는 형태가 됩니다.
sort_by_key, unwrap_or_else, thread::spawn처럼 호출 횟수와 이동 여부를 함께 읽습니다.