我有一个可变的字符串变量,以及一个不可变的变量绑定到可变引用的可变字符串变量。为什么变量的可变引用可以使用可变变量?
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
而不是第一个变量?