Erro "cannot borrow as mutable because it is also borrowed as immutable" em Rust: como corrigir?
Olá! Comecei a estudar Rust e me deparei com um problema que não consigo entender.
Tenho um programa simples que recebe uma string e tenta primeiro obter seu comprimento, e depois modificar o primeiro caractere:
```rust
fn main() {
let mut text = String::from("hello");
let first = &text[0..1]; // referência imutável
text.push_str(" world"); // tentativa de empréstimo mutável
println!("First char: {}", first);
}
```
O compilador exibe o erro:
```
error[E0502]: cannot borrow `text` as mutable because it is also borrowed as immutable
```
Eu entendo que em Rust existem regras de empréstimo: ou uma referência mutável, ou quantas referências imutáveis forem necessárias. Mas por que meu caso viola essa regra? Afinal, primeiro pego uma referência imutável para parte da string, e depois...