#[derive(Debug)] struct NotCopyable; #[derive(Debug, Clone)] struct NotCopyableButCloneable; fn func H, H: FnMut()>(_: F) {} fn foo() { let var = NotCopyable; func(|| { // Shouldn't suggest `move ||.as_ref()` here move || { //~ ERROR cannot move out of `var` let x = var; //~ ERROR cannot move out of `var` println!("{x:?}"); } }); } fn bar() { let var = NotCopyableButCloneable; func(|| { // Shouldn't suggest `move ||.as_ref()` here move || { //~ ERROR cannot move out of `var` let x = var; //~ ERROR cannot move out of `var` println!("{x:?}"); } }); } fn main() {}