27 lines
562 B
Rust
27 lines
562 B
Rust
// 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() {
|
|
}
|