假设我有一个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.
}