trait X { fn get_i(&self) -> isize; } struct B { i: isize } impl X for B { fn get_i(&self) -> isize { self.i } } struct A<'a> { p: &'a (dyn X + 'a) } fn make_a<'a>(p: &'a dyn X) -> A<'a> { A { p: p } } fn make_make_a<'a>() -> A<'a> { let b: Box = Box::new(B { i: 1 }); let bb: &B = &*b; make_a(bb) //~ ERROR cannot return value referencing local data `*b` } fn main() { let _a = make_make_a(); }