diff options
Diffstat (limited to 'compiler/rustc_error_codes/src/error_codes/E0107.md')
-rw-r--r-- | compiler/rustc_error_codes/src/error_codes/E0107.md | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/compiler/rustc_error_codes/src/error_codes/E0107.md b/compiler/rustc_error_codes/src/error_codes/E0107.md new file mode 100644 index 000000000..4e37695a5 --- /dev/null +++ b/compiler/rustc_error_codes/src/error_codes/E0107.md @@ -0,0 +1,44 @@ +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! +} +``` |