我不明白爲什麼rustc給了我這個錯誤error: use of moved value: 'f'
在編譯時,用下面的代碼:爲什麼我不能重用funtion的借用指針
fn inner(f: &fn(&mut int)) {
let mut a = ~1;
f(a);
}
fn borrow(b: &mut int, f: &fn(&mut int)) {
f(b);
f(b); // can reuse borrowed variable
inner(f); // shouldn't f be borrowed?
// Why can't I reuse the borrowed reference to a function?
// ** error: use of moved value: `f` **
//f(b);
}
fn main() {
let mut a = ~1;
print!("{}", (*a));
borrow(a, |x: &mut int| *x+=1);
print!("{}", (*a));
}
我想重用我通過後關閉它作爲另一個函數的參數。我不確定它是可複製還是堆棧封閉,有沒有辦法說明?
該代碼段用於生鏽0.8。我設法使用最新的rustc(master:g67aca9c)編譯不同版本的代碼,將&fn(&mut int)
更改爲普通的fn(&mut int)
,並使用普通函數而不是閉包,但是如何才能使用閉包來處理此問題?
我已閱讀[防鏽閉鎖偵探工作](http://blog.pnkfx.org/blog/2013/06/07/detective-work-on-rust-closures/),但我不太清楚還沒完成。 –