Understanding Rust Error E0062: Duplicate Field in Struct or Enum Variant
What is Rust Error E0062?
Rust Error E0062 occurs when a field in a struct or struct-like enum variant is specified more than once during instantiation. Each field should be specified exactly once.
Erroneous Code Example
struct Foo {
x: i32,
}
fn main() {
let x = Foo {
x: 0,
x: 0, // error: field `x` specified more than once
};
}
In the example above, the field `x` is specified twice. The correct version should look like this:
Correct Code Example
struct Foo {
x: i32,
}
fn main() {
let x = Foo { x: 0 }; // ok!
}
Struct-like Enum Variant Example
The same error can occur with struct-like enum variants. Consider the following erroneous code:
enum MyEnum {
Variant { x: i32, y: i32 }
}
fn main() {
let value = MyEnum::Variant { x: 1, y: 2, x: 1 }; // error: field `x` specified more than once
}
The error here is due to specifying the `x` field twice in the `MyEnum::Variant` instantiation. The corrected version should look like this:
Correct Enum Variant Example
enum MyEnum {
Variant { x: i32, y: i32 }
}
fn main() {
let value = MyEnum::Variant { x: 1, y: 2 }; // ok!
}
Summary
Rust Error E0062 is caused by specifying a field more than once during the instantiation of a struct or struct-like enum variant. To fix this error, ensure each field is specified only once.