我正在学习 Rust,并且已经实现了一些简单的代码来试验闭包 - 但是我遇到了借用检查器的问题,我不知道如何解决。
编译以下函数时
fn twice(x:int, f:|int| -> int) -> int {
f(f(x))
}
我收到以下错误
closure requires unique access to `f` but it is already borrowed
我正在阅读指南,并对为什么借用检查器不喜欢这个有适度的理解——但我不确定如何解决它。
我可以通过首先将第一次调用的结果分配给临时变量,然后f(..)
再次调用它来解决它。然而,这感觉不雅。
有没有更干净/更好的写作方式f(f(x))
,或者有什么方法可以让编译器相信这是安全的?