| An incorrect number of generic arguments was provided. |
| |
| Erroneous code example: |
| |
| ```compile_fail,E0107 |
| struct Foo<T> { x: T } |
| |
| struct Bar { x: Foo } // error: wrong number of type arguments: |
| // expected 1, found 0 |
| struct Baz<S, T> { x: Foo<S, T> } // error: wrong number of type arguments: |
| // expected 1, found 2 |
| |
| fn foo<T, U>(x: T, y: U) {} |
| fn f() {} |
| |
| fn main() { |
| let x: bool = true; |
| foo::<bool>(x); // error: wrong number of type arguments: |
| // expected 2, found 1 |
| foo::<bool, i32, i32>(x, 2, 4); // error: wrong number of type arguments: |
| // expected 2, found 3 |
| f::<'static>(); // error: wrong number of lifetime arguments |
| // expected 0, found 1 |
| } |
| ``` |
| |
| When using/declaring an item with generic arguments, you must provide the exact |
| same number: |
| |
| ``` |
| struct Foo<T> { x: T } |
| |
| struct Bar<T> { x: Foo<T> } // ok! |
| struct Baz<S, T> { x: Foo<S>, y: Foo<T> } // ok! |
| |
| fn foo<T, U>(x: T, y: U) {} |
| fn f() {} |
| |
| fn main() { |
| let x: bool = true; |
| foo::<bool, u32>(x, 12); // ok! |
| f(); // ok! |
| } |
| ``` |