Erreur "cannot move out of borrowed content" en Rust : causes et correction
Salut ! J'ai commencé à apprendre Rust et je suis tombé sur une erreur que je ne comprends pas. Code :
```rust
fn main() {
let s = String::from("hello");
let r = &s;
let s2 = *r; // Erreur : cannot move out of borrowed content
println!("{}", s2);
}
```
Je pensais que `*r` déréférençait la référence et me donnait la propriété de la chaîne `s`. Mais le compilateur dit : "cannot move out of `*r` which is behind a shared reference". Pourquoi ? Pourtant, je veux juste copier la valeur.
La même chose se produit avec les vecteurs :
```rust
fn get_first(v: &Vec) -> i32 {
v[0] // Erreur : cannot move out of borrowed content
}
```
Je comprends que Rust suit strictement la propriété, mais je ne comprends pas pourquoi on ne peut pas simplement "prendre" la valeur par référence. Dans d'autres langages (C++, Python), cela fonctionne. Comment obtenir correctement