// run-pass use std::mem; const FOO: fn(u8) -> u8 = |v: u8| { v }; const BAR: [fn(&mut u32); 5] = [ |_: &mut u32| {}, |v: &mut u32| *v += 1, |v: &mut u32| *v += 2, |v: &mut u32| *v += 3, |v: &mut u32| *v += 4, ]; fn func_specific() -> fn() -> u32 { || return 42 } fn generic(_: T) -> fn() -> usize { || mem::size_of::() } fn main() { // Items assert_eq!(func_specific()(), 42); let foo: fn(u8) -> u8 = |v: u8| { v }; assert_eq!(foo(31), 31); // Constants assert_eq!(FOO(31), 31); let mut a: u32 = 0; assert_eq!({ BAR[0](&mut a); a }, 0); assert_eq!({ BAR[1](&mut a); a }, 1); assert_eq!({ BAR[2](&mut a); a }, 3); assert_eq!({ BAR[3](&mut a); a }, 6); assert_eq!({ BAR[4](&mut a); a }, 10); assert_eq!(generic(0i8)(), 1); }