// Test that the `'a` in the where clause correctly links the region // of the output to the region of the input. trait FnLike { fn call(&self, arg: A) -> R; } fn call_repeatedly(f: F) where F : for<'a> FnLike<&'a isize, &'a isize> { // Result is stored: cannot re-assign `x` let mut x = 3; let y = f.call(&x); x = 5; //~ ERROR cannot assign to `x` because it is borrowed // Result is not stored: can re-assign `x` let mut x = 3; f.call(&x); f.call(&x); f.call(&x); x = 5; drop(y); } fn main() { }