diff options
| author | bors <bors@rust-lang.org> | 2021-04-23 23:44:49 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-04-23 23:44:49 +0000 |
| commit | 8ad0821b035e35aed07ec252c2dd831c15a4e26e (patch) | |
| tree | a5b32fe60523876762c5a1064c7db4e084c06e7b /compiler/rustc_error_codes/src | |
| parent | bb491ed23937aef876622e4beb68ae95938b3bf9 (diff) | |
| parent | eea27b81366a6a91a5b05153cd9ab6207d7f11bc (diff) | |
| download | rust-8ad0821b035e35aed07ec252c2dd831c15a4e26e.tar.gz rust-8ad0821b035e35aed07ec252c2dd831c15a4e26e.zip | |
Auto merge of #83729 - JohnTitor:issue-43913, r=estebank
Add a suggestion when using a type alias instead of trait alias Fixes #43913 r? `@estebank`
Diffstat (limited to 'compiler/rustc_error_codes/src')
| -rw-r--r-- | compiler/rustc_error_codes/src/error_codes/E0404.md | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/compiler/rustc_error_codes/src/error_codes/E0404.md b/compiler/rustc_error_codes/src/error_codes/E0404.md index 1360cc99afc..d6fa51e618c 100644 --- a/compiler/rustc_error_codes/src/error_codes/E0404.md +++ b/compiler/rustc_error_codes/src/error_codes/E0404.md @@ -8,14 +8,15 @@ struct Foo; struct Bar; impl Foo for Bar {} // error: `Foo` is not a trait +fn baz<T: Foo>(t: T) {} // error: `Foo` is not a trait ``` Another erroneous code example: ```compile_fail,E0404 -struct Foo; +type Foo = Iterator<Item=String>; -fn bar<T: Foo>(t: T) {} // error: `Foo` is not a trait +fn bar<T: Foo>(t: T) {} // error: `Foo` is a type alias ``` Please verify that the trait's name was not misspelled or that the right @@ -30,14 +31,27 @@ struct Bar; impl Foo for Bar { // ok! // functions implementation } + +fn baz<T: Foo>(t: T) {} // ok! ``` -or: +Alternatively, you could introduce a new trait with your desired restrictions +as a super trait: ``` -trait Foo { - // some functions -} +# trait Foo {} +# struct Bar; +# impl Foo for Bar {} +trait Qux: Foo {} // Anything that implements Qux also needs to implement Foo +fn baz<T: Qux>(t: T) {} // also ok! +``` + +Finally, if you are on nightly and want to use a trait alias +instead of a type alias, you should use `#![feature(trait_alias)]`: + +``` +#![feature(trait_alias)] +trait Foo = Iterator<Item=String>; fn bar<T: Foo>(t: T) {} // ok! ``` |
