반응형
클로저는 언제 Fn, FnMut 및 FnOnce를 구현합니까?
, 및 특성 을 구현하기위한 클로저 의 특정 조건 은 무엇입니까 ?Fn
FnMut
FnOnce
그건:
- 때 폐쇄 않습니다 하지 구현
FnOnce
특성을? - 때 폐쇄 않습니다 하지 구현
FnMut
특성을? - 때 폐쇄 않습니다 하지 구현
Fn
특성을?
예를 들어, 몸체에서 클로저 상태를 변경하면 컴파일러가 구현되지 않습니다 Fn
.
특성은 각각 call_...
메서드 의 시그니처 , 특히 다음 유형으로 표시되는 클로저 / 함수에 대한 점점 더 제한적인 속성을 나타냅니다 self
.
FnOnce
(self
)는 한 번만 호출 할 수있는 함수입니다.FnMut
(&mut self
)는&mut
환경에 액세스 할 수있는 경우 호출 할 수있는 함수입니다.Fn
(&self
)는&
환경 에만 액세스 할 수있는 경우에도 호출 할 수있는 함수입니다 .
클로저 |...| ...
는 가능한 한 많은 것을 자동으로 구현합니다.
- 모든 클로저는 구현합니다
FnOnce
: 한 번 호출 할 수없는 클로저는 이름을 가질 가치가 없습니다. 클로저가를 구현하는 경우FnOnce
한 번만 호출 할 수 있습니다. - 캡처에서 벗어나지 않는 클로저는를 구현
FnMut
하여 두 번 이상 호출 할 수 있습니다 (함수 객체에 대한 비 앨리어싱 액세스가있는 경우). - 캡처에 대한 고유 / 변경 가능한 액세스가 필요하지 않은 클로저는를 구현
Fn
하여 본질적으로 모든 곳에서 호출 할 수 있습니다.
이러한 제한 self
은 클로저 의 유형 및 "desugaring" 에서 직접 구조체로 이어집니다 ( Rust에서 클로저 찾기에 설명 됨 ).
2017 년 현재 Rust의 클로저에 대한 정보 는 Rust 책의 클로저 장을 보세요.
참고 URL : https://stackoverflow.com/questions/30177395/when-does-a-closure-implement-fn-fnmut-and-fnonce
반응형
'program tip' 카테고리의 다른 글
distutils를 사용하여 설치된 Python 패키지를 어떻게 제거합니까? (0) | 2020.09.06 |
---|---|
중괄호로 묶인 이니셜 라이저는 언제 사용합니까? (0) | 2020.09.06 |
Windows Phone 7 에뮬레이터에서 TextBox.TextChanged 이벤트가 두 번 발생합니다. (0) | 2020.09.06 |
Python UTC datetime 객체의 ISO 형식에는 Z (Zulu 또는 Zero 오프셋)가 포함되지 않습니다. (0) | 2020.09.06 |
iOS8의 Safari는 고정 요소가 포커스를받을 때 화면을 스크롤합니다. (0) | 2020.09.06 |