type error go brrrrrrrr

This commit is contained in:
Ellen 2021-11-06 10:32:11 +00:00
parent 7276a6a117
commit abb9a9853b
4 changed files with 51 additions and 2 deletions

View file

@ -0,0 +1,17 @@
pub struct A;
impl From<fn((), (), &())> for A {
fn from(_: fn((), (), &mut ())) -> Self {
//~^ error: method `from` has an incompatible type for trait
loop {}
}
}
pub struct B;
impl From<fn((), (), u32)> for B {
fn from(_: fn((), (), u64)) -> Self {
//~^ error: method `from` has an incompatible type for trait
loop {}
}
}
fn main() {}

View file

@ -0,0 +1,27 @@
error[E0053]: method `from` has an incompatible type for trait
--> $DIR/issue-90444.rs:3:16
|
LL | fn from(_: fn((), (), &mut ())) -> Self {
| ^^^^^^^^^^^^^^^^^^^
| |
| types differ in mutability
| help: change the parameter type to match the trait: `for<'r> fn((), (), &'r ())`
|
= note: expected fn pointer `fn(for<'r> fn((), (), &'r ())) -> A`
found fn pointer `fn(for<'r> fn((), (), &'r mut ())) -> A`
error[E0053]: method `from` has an incompatible type for trait
--> $DIR/issue-90444.rs:11:16
|
LL | fn from(_: fn((), (), u64)) -> Self {
| ^^^^^^^^^^^^^^^
| |
| expected `u32`, found `u64`
| help: change the parameter type to match the trait: `fn((), (), u32)`
|
= note: expected fn pointer `fn(fn((), (), u32)) -> B`
found fn pointer `fn(fn((), (), u64)) -> B`
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0053`.