| //@ run-rustfix | 
 | #![allow(dead_code, path_statements)] | 
 | fn foo1(s: &str) -> impl Iterator<Item = String> + '_ { | 
 |     None.into_iter() | 
 |         .flat_map(move |()| s.chars().map(|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(|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<Item = ()> + 'a { | 
 |     Some(()).iter().flat_map(move |()| { | 
 |         Some(()).iter().map(|()| { bar; }) //~ ERROR captured variable cannot escape | 
 |         //~^ HELP consider adding 'move' keyword before the nested closure | 
 |     }) | 
 | } | 
 |  | 
 | fn main() {} |