diff options
| -rw-r--r-- | src/librustc_typeck/diagnostics.rs | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/src/librustc_typeck/diagnostics.rs b/src/librustc_typeck/diagnostics.rs index c0cca08b676..cdac66a2272 100644 --- a/src/librustc_typeck/diagnostics.rs +++ b/src/librustc_typeck/diagnostics.rs @@ -2787,23 +2787,42 @@ You used an associated type which isn't defined in the trait. Erroneous code example: ```compile_fail -trait Trait { +trait T1 { type Bar; } -type Foo = Trait<F=i32>; // error: associated type `F` not found for - // `Trait` +type Foo = T1<F=i32>; // error: associated type `F` not found for `T1` + +// or: + +trait T2 { + type Bar; + + // error: Baz is used but not declared + fn return_bool(&self, &Self::Bar, &Self::Baz) -> bool; +} ``` -Please verify you used the right trait or you didn't misspell the +Make sure that you have defined the associated type in the trait body. +Also, verify that you used the right trait or you didn't misspell the associated type name. Example: ``` -trait Trait { +trait T1 { type Bar; } -type Foo = Trait<Bar=i32>; // ok! +type Foo = T1<Bar=i32>; // ok! + +// or: + +trait T2 { + type Bar; + type Baz; // we declare `Baz` in our trait. + + // and now we can use it here: + fn return_bool(&self, &Self::Bar, &Self::Baz) -> bool; +} ``` "##, |
