W3cubDocs

/Rust

Error code E0128

A type parameter with default value is using forward declared identifier.

Erroneous code example:

#![allow(unused)]
fn main() {
struct Foo<T = U, U = ()> {
    field1: T,
    field2: U,
}
// error: generic parameters with a default cannot use forward declared
//        identifiers
}

Type parameter defaults can only use parameters that occur before them. Since type parameters are evaluated in-order, this issue could be fixed by doing:

#![allow(unused)]
fn main() {
struct Foo<U = (), T = U> {
    field1: T,
    field2: U,
}
}

Please also verify that this wasn't because of a name-clash and rename the type parameter if so.

© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/error_codes/E0128.html