// by steffahn use std::cell::Cell; use selfref::opaque; use selfref::Holder; struct MyStruct<'this> { cell: Cell<&'this str>, } struct MyStructKey; opaque! { impl Opaque for MyStructKey { type Kind<'this> = MyStruct<'this>; } } fn main() { let s = Holder::<'_, MyStructKey>::new_with(|builder| builder.build(MyStruct { cell: Default::default(), })); let s = Box::pin(s); s.as_ref().operate_in(|r| { r.cell.set(&String::from("hello world")); // temporary dropped at end of this statement println!("{}", r.cell.get()) // accesses dropped `String` data }); }