]> git.lizzy.rs Git - rust.git/blob - src/test/ui/unboxed-closures/unboxed-closures-wrong-arg-type-extern-fn.stderr
diagnostics: give a special note for unsafe fn / Fn/FnOnce/FnMut
[rust.git] / src / test / ui / unboxed-closures / unboxed-closures-wrong-arg-type-extern-fn.stderr
1 error[E0277]: expected a `Fn<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}`
2   --> $DIR/unboxed-closures-wrong-arg-type-extern-fn.rs:21:21
3    |
4 LL |     let x = call_it(&square, 22);
5    |             ------- ^^^^^^^ expected an `Fn<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}`
6    |             |
7    |             required by a bound introduced by this call
8    |
9    = help: the trait `for<'r> Fn<(&'r isize,)>` is not implemented for `unsafe fn(isize) -> isize {square}`
10    = note: unsafe functions must be wrapped in closures: `|| unsafe { /* code */ }`
11 note: required by a bound in `call_it`
12   --> $DIR/unboxed-closures-wrong-arg-type-extern-fn.rs:10:15
13    |
14 LL | fn call_it<F: Fn(&isize) -> isize>(_: &F, _: isize) -> isize {
15    |               ^^^^^^^^^^^^^^^^^^^ required by this bound in `call_it`
16
17 error[E0277]: expected a `FnMut<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}`
18   --> $DIR/unboxed-closures-wrong-arg-type-extern-fn.rs:26:25
19    |
20 LL |     let y = call_it_mut(&mut square, 22);
21    |             ----------- ^^^^^^^^^^^ expected an `FnMut<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}`
22    |             |
23    |             required by a bound introduced by this call
24    |
25    = help: the trait `for<'r> FnMut<(&'r isize,)>` is not implemented for `unsafe fn(isize) -> isize {square}`
26    = note: unsafe functions must be wrapped in closures: `|| unsafe { /* code */ }`
27 note: required by a bound in `call_it_mut`
28   --> $DIR/unboxed-closures-wrong-arg-type-extern-fn.rs:13:19
29    |
30 LL | fn call_it_mut<F: FnMut(&isize) -> isize>(_: &mut F, _: isize) -> isize {
31    |                   ^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `call_it_mut`
32
33 error[E0277]: expected a `FnOnce<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}`
34   --> $DIR/unboxed-closures-wrong-arg-type-extern-fn.rs:31:26
35    |
36 LL |     let z = call_it_once(square, 22);
37    |             ------------ ^^^^^^ expected an `FnOnce<(&isize,)>` closure, found `unsafe fn(isize) -> isize {square}`
38    |             |
39    |             required by a bound introduced by this call
40    |
41    = help: the trait `for<'r> FnOnce<(&'r isize,)>` is not implemented for `unsafe fn(isize) -> isize {square}`
42    = note: unsafe functions must be wrapped in closures: `|| unsafe { /* code */ }`
43 note: required by a bound in `call_it_once`
44   --> $DIR/unboxed-closures-wrong-arg-type-extern-fn.rs:16:20
45    |
46 LL | fn call_it_once<F: FnOnce(&isize) -> isize>(_: F, _: isize) -> isize {
47    |                    ^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `call_it_once`
48
49 error: aborting due to 3 previous errors
50
51 For more information about this error, try `rustc --explain E0277`.