сложить в одну структуру, чтобы можно было их дропнуть вместе в любой момент, как? 👀
use std::marker::PhantomData;
struct A<'a> { _p: PhantomData<&'a ()> }
struct B<'a> { _p: PhantomData<&'a ()> }
struct C<'a> { _p: PhantomData<&'a ()> }
impl<'a> A<'a> {
fn b(&self) -> B {
B { _p: PhantomData }
}
}
impl<'a> B<'a> {
fn c(&self) -> C {
C { _p: PhantomData }
}
}
struct Leak<'a>
{
a: A<'a>,
b: B<'a>,
c: C<'a>,
}
fn foo() {
let a = A { _p: PhantomData };
let b = a.b();
let c = b.c();
let leak = Leak { a, b, c }; // can't move out of `a` because it is borrowed ...
Box::leak(Box::new(leak));
// Box::leak(Box::new(c));
// Box::leak(Box::new(b));
// Box::leak(Box::new(a));
}
impl<'a> A<'a> { fn b(&self) -> B<'a> { B { _p: PhantomData } } } укажи 'a лайфтайм у возвращаемых структур
мне нужна привязка к &'a self
Обсуждают сегодня