This fails: ``` fn foo(f: fn() -> !) {} fn main() { foo(|| {fail }); } ``` with ``` foo.rs:4:7: 4:18 error: mismatched types: expected `fn&() -> !` but found `fn&() -> _|_` (expected non-returning function, found non-returning function) foo.rs:4 foo(|| {fail }); ^~~~~~~~~~~ ``` While this works: ``` fn foo(f: fn() -> !) {} fn main() { foo(fn() -> ! { fail }); } ``` I don't know what is going on there but I feel the first snippet should work too.