1
Fork 0

Don't use main; improve example

This commit is contained in:
aticu 2022-06-13 09:32:54 +02:00
parent 1cbacc0c8a
commit 38ea23558e
2 changed files with 11 additions and 19 deletions

View file

@ -9,15 +9,13 @@ impl Into<u32> for Foo {
fn into(self) -> u32 { 1 }
}
fn main() {
let foo = Foo;
let bar: u32 = foo.into() * 1u32;
}
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
fully-qualified method:
trait's type parameter:
```
struct Foo;
@ -26,8 +24,6 @@ impl Into<u32> for Foo {
fn into(self) -> u32 { 1 }
}
fn main() {
let foo = Foo;
let bar: u32 = <Foo as Into<u32>>::into(foo) * 1u32;
}
let foo = Foo;
let bar: u32 = Into::<u32>::into(foo) * 1u32;
```

View file

@ -20,11 +20,9 @@ impl Generator for AnotherImpl {
fn create() -> u32 { 2 }
}
fn main() {
let cont: u32 = Generator::create();
// error, impossible to choose one of Generator trait implementation
// Should it be Impl or AnotherImpl, maybe something else?
}
let cont: u32 = Generator::create();
// error, impossible to choose one of Generator trait implementation
// Should it be Impl or AnotherImpl, maybe something else?
```
This error can be solved by adding type annotations that provide the missing
@ -42,10 +40,8 @@ impl Generator for AnotherImpl {
fn create() -> u32 { 2 }
}
fn main() {
let gen1 = AnotherImpl::create();
let gen1 = AnotherImpl::create();
// if there are multiple methods with same name (different traits)
let gen2 = <AnotherImpl as Generator>::create();
}
// if there are multiple methods with same name (different traits)
let gen2 = <AnotherImpl as Generator>::create();
```