Fn 트레이트

클로저 캡처 방식 읽기

클로저는 주변 값을 불변 참조, 가변 참조, 소유권 이동 중 어떤 방식으로 캡처하는지에 따라 호출 가능한 트레이트가 달라집니다.

읽기만 함

환경 값을 불변으로 빌리면 여러 번 호출 가능한 Fn 성격으로 사용할 수 있습니다.

값을 바꿈

캡처한 값을 수정하면 가변 빌림이 필요해 FnMut 조건을 만족하는 API가 필요합니다.

소유권 이동

move 클로저나 캡처값을 밖으로 보내는 경우 FnOnce처럼 한 번 호출되는 형태가 됩니다.

API 판단

sort_by_key, unwrap_or_else, thread::spawn처럼 호출 횟수와 이동 여부를 함께 읽습니다.