Don't use main; improve example
This commit is contained in:
parent
1cbacc0c8a
commit
38ea23558e
2 changed files with 11 additions and 19 deletions
|
@ -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;
|
|
||||||
}
|
|
||||||
```
|
```
|
||||||
|
|
|
@ -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();
|
||||||
}
|
|
||||||
```
|
```
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue