| struct Guard<'a> { | |
| f: Box<dyn Fn() + Send + 'a>, | |
| } | |
| fn scoped<'a, F: Fn() + Send + 'a>(f: F) -> Guard<'a> { | |
| Guard { f: Box::new(f) } | |
| } | |
| impl<'a> Guard<'a> { | |
| fn join(self) {} | |
| } | |
| fn main() { | |
| let bad = { | |
| let x = 1; | |
| let y = &x; | |
| //~^ ERROR `x` does not live long enough | |
| scoped(|| { | |
| let _z = y; | |
| //~^ ERROR `y` does not live long enough | |
| }) | |
| }; | |
| bad.join(); | |
| } |