1 static FOO: fn() = || assert_ne!(42, 43);
2 static BAR: fn(i32, i32) = |a, b| assert_ne!(a, b);
4 // use to first make the closure FnOnce() before making it fn()
5 fn force_once0<R, F: FnOnce() -> R>(f: F) -> F {
8 fn force_once1<T, R, F: FnOnce(T) -> R>(f: F) -> F {
11 fn force_mut0<R, F: FnMut() -> R>(f: F) -> F {
14 fn force_mut1<T, R, F: FnMut(T) -> R>(f: F) -> F {
21 let bar: unsafe fn(i32, i32) = BAR;
22 unsafe { bar(46, 47) };
23 let boo: &dyn Fn(i32, i32) = &BAR;
28 let f = force_once0(|| {}) as fn();
30 let f = force_mut0(|| {}) as fn();
33 let g: fn(i32) = |i| assert_eq!(i, 2);
35 let g = force_once1(|i| assert_eq!(i, 2)) as fn(i32);
37 let g = force_mut1(|i| assert_eq!(i, 2)) as fn(i32);