我有一個可變的字符串變量,以及一個不可變的變量綁定到可變引用的可變字符串變量。爲什麼變量的可變引用可以使用可變變量?
let mut string = String::from("test");
let variable: &mut String = &mut string;
variable.push_str(" test");
string.push_str(" test");
這種失敗:
error[E0499]: cannot borrow `string` as mutable more than once at a time
--> src/main.rs:5:5
|
3 | let variable: &mut String = &mut string;
| ------ first mutable borrow occurs here
4 | variable.push_str(" test");
5 | string.push_str(" test");
| ^^^^^^ second mutable borrow occurs here
6 | }
| - first borrow ends here
- 沒有第二個變量是可變的,爲什麼我能叫
push_str
? - 爲什麼我可以在第二個變量上調用
push_str
而不是第一個變量?