【发布时间】:2019-10-16 10:40:59
【问题描述】:
我想将 HashMap 和元素 - Foo 传递给我的函数。 我不明白变量的生命周期。请帮忙。
结果:错误[E0623]:寿命不匹配
use std::collections::HashMap;
#[derive(Debug)]
struct Foo<'a> {
x: &'a i32,
}
fn add_to_map<'l>(map: &'l HashMap<u32, &'l Foo>, element : &'l Foo)
{
map.insert(1, element);
}
fn main()
{
let mut map: HashMap<u32, &Foo> = HashMap::new();
let v = 5;
let mut f = Foo { x: &v };
add_to_map(&map, &f);
println!("now f is {:?}", f);
}
编译器输出:
error[E0623]: lifetime mismatch
--> src/main.rs:11:19
|
9 | fn add_to_map<'l>(map: &'l HashMap<u32, &'l Foo>, element : &'l Foo)
| --- --- these two types are declared with different lifetimes...
10 | {
11 | map.insert(1, element);
| ^^^^^^^ ...but data from `element` flows into `map` here
error: aborting due to previous error
【问题讨论】: