Retour à la leçon
Mission

Mission : debloquer un cache qui refuse de compiler

Diagnostiquer une violation de la regle du borrow checker et choisir la reorganisation de code qui la resout sans clone inutile.

Contexte

Un collegue a ecrit un petit cache en memoire et obtient l'erreur 'cannot borrow cache as mutable because it is also borrowed as immutable' :

rust
fn main() {
    let mut cache: Vec<String> = vec![String::from("a"), String::from("b")];
    let premier = &cache[0];
    cache.push(String::from("c"));
    println!("{}", premier);
}

Il ne comprend pas pourquoi push declenche une erreur alors qu'il ne touche pas directement a premier. Aide-le a comprendre la regle exacte qui est violee, et corrige le code.