0
我有這樣的代碼:如何分配給借用變量違反引用規則?
struct Foo<'a> {
link: &'a i32,
}
fn main() {
let mut x = 33;
println!("x:{}", x);
let ff = Foo { link: &x };
x = 22;
}
生成此編譯器錯誤:
error[E0506]: cannot assign to `x` because it is borrowed
--> src/main.rs:9:5
|
8 | let ff = Foo { link: &x };
| - borrow of `x` occurs here
9 | x = 22;
| ^^^^^^ assignment to borrowed `x` occurs here
鏽病本書只有兩個規則:
- 一個或多個引用(
&T
)到資源, - 恰好一個可變參考(
&mut T
)。
我有一個可變變量和一個不可變鏈接。爲什麼編譯器會提供一個錯誤?
可能值得注意的是:這兩個規則不是通過「和」連接的,它們通過「或」連接。你只能有一個或另一個,而不是兩個。 –