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 {
8 // note: argument type here is `isize`, not `&isize`
10 fn call_it<F: Fn(&isize) -> isize>(_: &F, _: isize) -> isize {
13 fn call_it_mut<F: FnMut(&isize) -> isize>(_: &mut F, _: isize) -> isize {
16 fn call_it_once<F: FnOnce(&isize) -> isize>(_: F, _: isize) -> isize {
21 let x = call_it(&square, 22);
26 let y = call_it_mut(&mut square, 22);
31 let z = call_it_once(square, 22);