Я хочу передать 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