我试图创建一个包含两个哈希图的结构 - 一个具有一些值,另一个引用另一个哈希图的元素。这是我的代码。
use std::collections::HashMap;
struct Foo;
struct Bar<'s>(&'s Foo);
struct MyStruct<'a> {
first : HashMap<&'a str, Foo>,
second : HashMap<&'a str, Bar<'a>>,
}
impl<'a> MyStruct<'a> {
fn new() -> MyStruct<'a> {
let mut result = MyStruct {
first : HashMap::new(),
second : HashMap::new(),
};
match result.first.get("") {
Some(t) => { result.second.insert("", Bar(t)); },
None => {},
}
result
}
}
fn main() {
}
并且此代码无法编译并出现以下错误:
错误:
result.first
活得不够长
我认为这个问题与生命有关,但我无法清楚地解释错误。
有人可以解释发生了什么以及如何解决这个错误吗?
P.S。 struct Foo
和Bar
来自库,因此我无法修改这些结构。