| fn borrow<T>(x: &T) -> &T {x} | |
| fn foo<C, M>(mut cond: C, mut make_box: M) where | |
| C: FnMut() -> bool, | |
| M: FnMut() -> Box<isize>, | |
| { | |
| let mut y: &isize; | |
| loop { | |
| let x = make_box(); | |
| // Here we complain because the resulting region | |
| // of this borrow is the fn body as a whole. | |
| y = borrow(&*x); | |
| //~^ ERROR `*x` does not live long enough | |
| assert_eq!(*x, *y); | |
| if cond() { break; } | |
| } | |
| assert!(*y != 0); | |
| } | |
| fn main() {} |