Angenommen, ich habe eine HashMap
und ich möchte eine veränderbare Referenz auf einen Eintrag erhalten, oder wenn dieser Eintrag nicht existiert Ich möchte eine veränderbare Referenz auf ein neues Objekt, wie kann ich es tun? Ich habe versucht, unwrap_or()
, so etwas wie dies mit:Default veränderbarer Wert von 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.
}
Aber das funktioniert nicht, weil die Lebensdauer der Vec
nicht lang genug ist. Gibt es eine Möglichkeit, Rust mitzuteilen, dass ich die zurückgegebene Vec
die gleiche Lebensdauer wie foo()
haben möchte? Ich meine, es diese offensichtliche Lösung ist, aber ich fühle mich wie sollte es einen besseren Weg geben:
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.
}
Sie möchten dies tun, ohne 'Dummy' an irgendeiner Stelle in die Karte einzufügen? Ich frage mich nur. – bluss
Genau, obwohl es nur eine Vorliebe in meinem speziellen Anwendungsfall ist. Obwohl ich mir Situationen vorstellen kann, in denen man nicht "Dummy" einfügen möchte. – Timmmm