fn t(x: &mut u8) -> &mut u8 {
x
}
fn main() {
let mut x = 5u8;
let y = & mut x;
let z = t(y);
println!("{}", y);
}
編譯這給了我這個錯誤:參考作爲參數傳遞不動
main.rs:9:20: 9:21 error: cannot borrow `y` as immutable because `*y` is also borrowed as mutable
main.rs:9 println!("{}", y);
我還以爲y
會調用t
期間被移動,然後回到z
,導致error: use of moved value
- 爲什麼我會得到這個錯誤信息呢?
- 當引用作爲函數參數提供時,Rust是否會自動創建新的借位而不是傳遞所有權?
- 這種行爲的目的是什麼?
參見[移動性情不定地借來的所有權(http://stackoverflow.com/q/27650188/155423 ) – Shepmaster