Error code E0806
An externally implementable item is not compatible with its declaration.
Erroneous code example:
#![feature(extern_item_impls)]
#[eii(foo)]
fn x();
#[foo]
fn y(a: u64) -> u64 {
//~^ ERROR E0806
a
}
fn main() {}
The error here is caused by the fact that y implements the
externally implementable item foo.
It can only do so if the signature of the implementation y matches
that of the declaration of foo.
So, to fix this, y’s signature must be changed to match that of x:
#![feature(extern_item_impls)]
#[eii(foo)]
fn x();
#[foo]
fn y() {}
fn main() {}
One common way this can be triggered is by using the wrong
signature for #[panic_handler].
The signature is provided by core.
#![no_std]
#[panic_handler]
fn on_panic() -> ! {
//~^ ERROR E0806
loop {}
}
fn main() {}
Should be:
#![no_std]
#[panic_handler]
fn on_panic(info: &core::panic::PanicInfo<'_>) -> ! {
loop {}
}
fn main() {}