1 // Tests that unsafe extern fn pointers do not implement any Fn traits.
3 use std::ops::{Fn, FnMut, FnOnce};
5 unsafe fn square(x: &isize) -> isize {
9 fn call_it<F: Fn(&isize) -> isize>(_: &F, _: isize) -> isize {
12 fn call_it_mut<F: FnMut(&isize) -> isize>(_: &mut F, _: isize) -> isize {
15 fn call_it_once<F: FnOnce(&isize) -> isize>(_: F, _: isize) -> isize {
20 let x = call_it(&square, 22);
25 let y = call_it_mut(&mut square, 22);
30 let z = call_it_once(square, 22);