| Cannot use the associated type of |
| a trait with uninferred generic parameters. |
| |
| Erroneous code example: |
| |
| ```compile_fail,E0212 |
| pub trait Foo<T> { |
| type A; |
| |
| fn get(&self, t: T) -> Self::A; |
| } |
| |
| fn foo2<I : for<'x> Foo<&'x isize>>( |
| field: I::A) {} // error! |
| ``` |
| |
| In this example, we have to instantiate `'x`, and |
| we don't know what lifetime to instantiate it with. |
| To fix this, spell out the precise lifetimes involved. |
| Example: |
| |
| ``` |
| pub trait Foo<T> { |
| type A; |
| |
| fn get(&self, t: T) -> Self::A; |
| } |
| |
| fn foo3<I : for<'x> Foo<&'x isize>>( |
| x: <I as Foo<&isize>>::A) {} // ok! |
| |
| |
| fn foo4<'a, I : for<'x> Foo<&'x isize>>( |
| x: <I as Foo<&'a isize>>::A) {} // ok! |
| ``` |