我有一个HashMap,它使用字符作为键,结构体作为值。
HashMap的get()方法经常会被调用,但传入的键不在HashMap中,因此我想在返回的Option上使用unwrap_or()来创建一个默认的struct值。然而,当我尝试这样做时,编译器会抛出以下错误(其中temp是我试图返回的默认值):
HashMap的get()方法经常会被调用,但传入的键不在HashMap中,因此我想在返回的Option上使用unwrap_or()来创建一个默认的struct值。然而,当我尝试这样做时,编译器会抛出以下错误(其中temp是我试图返回的默认值):
lib.rs:51:4: 51:8 error: `temp` does not live long enough
这是一个小的复现示例:
struct Sample {
thing: i32
}
fn do_stuff() {
let map = HashMap::<char, Sample>::new();
let sample = map.get(&'a').unwrap_or({
let temp = Sample {
thing : 0
};
&temp
});
}
我有两个问题:
- 是否有方法让
temp
绑定的生命周期更长? - 在使用选项时,是否有更好的方法来回退到默认的
结构
?