Не могу я понять эти ваши лайфтаймы. Есть, к примеру, вот такие структуры:
struct A {
i: i64,
}
struct B<'a> {
a: &'a A,
}
Я хочу сделать функцию, которая бы создавала и возвращала экземпляр B
, но получаю ошибку use of undeclared lifetime name
:
fn create_b(i: i64) -> B<'a> { // Ошибка в этой строке
let a = A {
i: i,
};
let b = B {
a: &a,
};
return b;
}
А если указать результат функции как fn create_b(i: i64) -> B
, то ошибка missing lifetime specifier
. Я примерно понимаю, почему возникает ошикба, но как исправить не знаю.
Переписать этот код я не могу - в реале я использую библиотеку в которой примерно похожие стуктуры.