Generic arguments were not provided in the same order as the corresponding generic parameters are declared, or a type was provided when a constant was expected.
Erroneous code example:
struct S<'a, T>(&'a T); type X = S<(), 'static>; // error: the type argument is provided before the // lifetime argument
The argument order should be changed to match the parameter declaration order, as in the following:
struct S<'a, T>(&'a T); type X = S<'static, ()>; // ok
Another erroneous code example:
struct Foo<const N: usize>; fn foo() -> Foo<usize> {} // error: type provided when a constant was // expected
A constant expression must be provided when a constant generic parameter is declared, not a type, as in the following:
struct Foo<const N: usize>;
fn foo() -> Foo<3> { Foo }