// run-pass fn mk() -> isize { return 1; } fn chk(a: isize) { println!("{}", a); assert_eq!(a, 1); } fn apply(produce: fn() -> T, consume: fn(T)) { consume(produce()); } pub fn main() { let produce: fn() -> isize = mk; let consume: fn(v: isize) = chk; apply::(produce, consume); }