// run-rustfix #![allow(dead_code, path_statements)] fn foo1(s: &str) -> impl Iterator + '_ { None.into_iter() .flat_map(move |()| s.chars().map(move |c| format!("{}{}", c, s))) //~^ ERROR captured variable cannot escape `FnMut` closure body //~| HELP consider adding 'move' keyword before the nested closure } fn foo2(s: &str) -> impl Sized + '_ { move |()| s.chars().map(move |c| format!("{}{}", c, s)) //~^ ERROR lifetime may not live long enough //~| HELP consider adding 'move' keyword before the nested closure } pub struct X; pub fn foo3<'a>( bar: &'a X, ) -> impl Iterator + 'a { Some(()).iter().flat_map(move |()| { Some(()).iter().map(move |()| { bar; }) //~ ERROR captured variable cannot escape //~^ HELP consider adding 'move' keyword before the nested closure }) } fn main() {}