답변:
특성은 각각 call_...
메서드 의 시그니처 , 특히 다음 유형으로 표시되는 클로저 / 함수에 대한 점점 더 제한적인 속성을 나타냅니다 self
.
FnOnce
( self
)는 한 번 호출 할 수있는 함수입니다.FnMut
( &mut self
)는 &mut
환경에 액세스 할 수있는 경우 호출 할 수있는 함수입니다.Fn
( &self
)는 &
환경 에만 액세스 할 수있는 경우 호출 할 수있는 함수입니다.클로저 |...| ...
는 가능한 한 많은 것을 자동으로 구현합니다.
FnOnce
: 한 번 호출 할 수없는 클로저는 이름을 가질 가치가 없습니다. 클로저가를 구현하는 경우 FnOnce
한 번만 호출 할 수 있습니다.FnMut
하여 두 번 이상 호출 할 수 있습니다 (함수 객체에 대한 비 앨리어싱 액세스가있는 경우).Fn
하여 본질적으로 모든 곳에서 호출 할 수 있습니다.이러한 제한 self
은 클로저 의 유형 및 구조로의 "디스가 링" 에서 직접 따릅니다 . 내 블로그 게시물 Finding Closure in Rust에 설명되어 있습니다.
클로저에 대한 정보는 클로저 : Rust 프로그래밍 언어 에서 환경 을 캡처 할 수있는 익명 함수 문서를 참조하십시오 .
FnOnce
한 번만 호출 할 수 있다는 의미입니까?
FnOnce
".