Avatar ·

Rust中的"cannot borrow as mutable because it is also borrowed as immutable"错误:如何修复?

你好!我刚开始学习Rust,遇到了一个我无法理解的问题。 我有一个简单的程序,它接受一个字符串,先尝试获取它的长度,然后修改第一个字符: ```rust fn main() { let mut text = String::from("hello"); let first = &text[0..1]; // 不可变引用 text.push_str(" world"); // 尝试可变借用 println!("First char: {}", first); } ``` 编译器报错: ``` error[E0502]: cannot borrow `text` as mutable because it is also borrowed as immutable ``` 我理解Rust有借用规则:要么一个可变引用,要么任意多个不可变引用。但为什么我的情况违反了这条规则?因为我先获取了字符串一部分的不可变引用,然后试图修改它。当我在修改后使用`first`时,这可能会导致问题吗?请解释一下这在实际中是如何工作的,以及如何正确解决这个问题。 具体来说:我