_p: &'a i32
}
pub struct B<'a> {
_b: Option<&'a B<'a>>,
_t: A<'a>
}
pub fn foo<'a, 'b, 'c>(b: &'a mut B, a: A<'b>) -> B<'c>
where 'a: 'c,
'b: 'c
{
B { _b: Some(b), _t: a }
}
// пример рабочей функции, не должна (сильно) измениться
pub fn baz() {
let a0 = A { _p: &1 };
let mut b1 = B { _b: None, _t: a1 };
{
let i1 = 1;
let a1 = A { _p: &i1 };
foo(&mut b1, a1);
}
let i2 = 2;
let a2 = A { _p: &i2 };
let _b3 = foo(&mut b1, a2);
}
есть такая попытка, но с ней baz даёт ошибку
pub struct B<'a, T> {
_b: Option<&'a B<'a, T>>,
_t: T
}
pub fn foo<'a, 'b, 'c, T>(b: &'a mut B<T>, a: T) -> B<'c, T>
where 'a: 'c,
'b: 'c,
{
B { _b: Some(b), _t: a }
}
если это вообще возможно
Обсуждают сегодня