Error code E0283
An implementation cannot be chosen unambiguously because of lack of information.
Erroneous code example:
#![allow(unused)] fn main() { struct Foo; impl Into<u32> for Foo { fn into(self) -> u32 { 1 } } let foo = Foo; let bar: u32 = foo.into() * 1u32; }
This error can be solved by adding type annotations that provide the missing information to the compiler. In this case, the solution is to specify the trait's type parameter:
#![allow(unused)] fn main() { struct Foo; impl Into<u32> for Foo { fn into(self) -> u32 { 1 } } let foo = Foo; let bar: u32 = Into::<u32>::into(foo) * 1u32; }