我有一个可变的字符串变量,还有一个不可变的变量,绑定到一个可变引用的不可变变量。
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
方法而不能在第一个变量上调用?