//@ edition:2021 struct StructA { b: StructB, } async fn spawn_blocking(f: impl (Fn() -> T) + Send + Sync + 'static) -> T { todo!() } impl StructA { async fn foo(&self) { let bar = self.b.bar().await; spawn_blocking(move || { //~^ ERROR borrowed data escapes outside of method self.b; //~^ ERROR cannot move out of `self.b`, as `self` is a captured variable in an `Fn` closure }) .await; } } struct StructB {} impl StructB { async fn bar(&self) -> Option { None } } fn main() {}