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 into(self) -> u32 { 1 }
} }
fn main() { let foo = Foo;
let foo = Foo; let bar: u32 = foo.into() * 1u32;
let bar: u32 = foo.into() * 1u32;
}
``` ```
This error can be solved by adding type annotations that provide the missing 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 information to the compiler. In this case, the solution is to specify the
fully-qualified method: trait's type parameter:
``` ```
struct Foo; struct Foo;
@ -26,8 +24,6 @@ impl Into<u32> for Foo {
fn into(self) -> u32 { 1 } fn into(self) -> u32 { 1 }
} }
fn main() { let foo = Foo;
let foo = Foo; let bar: u32 = Into::<u32>::into(foo) * 1u32;
let bar: u32 = <Foo as Into<u32>>::into(foo) * 1u32;
}
``` ```

View file

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