假设我有一个 HashMap
,我想要获取一个条目的可变引用,或者如果该条目不存在,我想要一个新对象的可变引用,我该怎么做?我尝试使用 unwrap_or()
,类似于这样:
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.
}
但这行不通,因为Vec
的生命周期不够长。有没有办法告诉Rust我希望返回的Vec
与foo()
具有相同的生命周期?我的意思是有一种显然的解决方案,但我觉得应该有更好的方法:
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.
}
dummy
。 - Timmmm