| //@ run-pass | |
| // Test by-ref capture of environment in unboxed closure types | |
| fn call_fn<F: Fn()>(f: F) { | |
| f() | |
| } | |
| fn call_fn_mut<F: FnMut()>(mut f: F) { | |
| f() | |
| } | |
| fn call_fn_once<F: FnOnce()>(f: F) { | |
| f() | |
| } | |
| fn main() { | |
| let mut x = 0_usize; | |
| let y = 2_usize; | |
| call_fn(|| assert_eq!(x, 0)); | |
| call_fn_mut(|| x += y); | |
| call_fn_once(|| x += y); | |
| assert_eq!(x, y * 2); | |
| } |