// Test that the `'a` in the where clause correctly links the region | |
// of the output to the region of the input. | |
trait FnLike<A,R> { | |
fn call(&self, arg: A) -> R; | |
} | |
fn call_repeatedly<F>(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() { | |
} |