Como posso modificar outros elementos de um HashMap ao usar o padrão de entrad

Eu gostaria de usar umHashMap para armazenar em cache um cálculo caro, dependente de outras entradas no mapa. O padrão de entrada fornece apenas uma referência mutável para o valor correspondente, mas não para o restante doHashMap. Eu realmente aprecio o feedback de uma maneira melhor de resolver este exemplo de brinquedo (incorreto):

use std::collections::HashMap;
use std::collections::hash_map::Entry::{Occupied, Vacant};

fn compute(cache: &mut HashMap<u32, u32>, input: u32) -> u32 {
    match cache.entry(input) {
        Vacant(entry) => if input > 2 {
            // Trivial placeholder for an expensive computation.
            *entry.insert(compute(&mut cache, input - 1) +
                          compute(&mut cache, input - 2))
        } else {
            0
        },
        Occupied(entry) => *entry.get(),
    }
}

fn main() {
    let mut cache = HashMap::<u32, u32>::new();
    let foo = compute(&mut cache, 12);
    println!("{}", foo);
}

(Parque infanti)

O problema com o trecho acima é quecache.entry emprestacache imutável, mas eu gostaria de atualizarcache também

questionAnswers(2)

yourAnswerToTheQuestion