녹을 학습 중이며 클로저를 실험하기위한 간단한 코드를 구현했습니다. 그러나 해결 방법을 모르는 차용 검사기와 관련하여 문제가 발생했습니다.클로저에 람다 함수에 대한 고유 한 액세스가 필요합니다.
fn twice(x:int, f:|int| -> int) -> int {
f(f(x))
}
는 내가 가이드를 통해 작업 및 차용 검사기가 좋아하지 않는 이유의 적당한 이해가있어
closure requires unique access to `f` but it is already borrowed
다음과 같은 오류를 얻을 다음 함수를 컴파일 할 때 이 문제는 해결할 방법이 확실하지 않습니다.
임시 변수에 첫 번째 호출의 결과를 먼저 할당 한 다음 f(..)
을 다시 호출하여 해결할 수 있습니다. 그러나 이것은 기분이 좋지 않습니다.
을 작성하는 데 더 깔끔하고 나은 방법이 있습니까? 아니면이 방법이 컴파일러에게 안전하다고 확신시킬 수 있습니까?
감사합니다. 이것이 의도적으로 언어의 일부인지, 아니면 빌리 확인 프로그램의 어떤 경우에 우리가 정리할 가장자리 케이스인지 알고 있습니까? –
반드시 수정해야합니다. –
@JamesDavies, 주로 엣지 경우 (예 : 내가 언급 한 문제 참조) – huon