Supponiamo di avere un HashMap
e voglio ottenere un riferimento mutabile a una voce, o se tale voce non esiste Voglio un riferimento mutabile a un nuovo oggetto, come posso farlo? Ho provato con unwrap_or()
, qualcosa di simile:Valore mutabile predefinito da HashMap
fn foo() {
let mut map: HashMap<&str, Vec<&str>> = HashMap::new();
let mut ref = map.get_mut("whatever").unwrap_or(&mut Vec::<&str>::new());
// Modify ref.
}
Ma questo non funziona perché la durata del Vec
non è abbastanza lungo. C'è un modo per dire a Rust che voglio il reso Vec
per avere la stessa durata di foo()
? Voglio dire, c'è questa soluzione ovvia, ma mi sento come se ci dovrebbe essere un modo migliore:
fn foo() {
let mut map: HashMap<&str, Vec<&str>> = HashMap::new();
let mut dummy: Vec<&str> = Vec::new();
let mut ref = map.get_mut("whatever").unwrap_or(&dummy);
// Modify ref.
}
Si desidera eseguire questa operazione senza inserire 'dummy' nella mappa in qualsiasi punto? Mi stavo solo chiedendo. – bluss
Esattamente, anche se è solo una preferenza nel mio particolare caso d'uso. Anche se posso immaginare situazioni in cui non vorresti inserire 'dummy'. – Timmmm