Why this fires¶
An enum decorated @stable (a promise that its numeric encoding won't silently shift between versions) has a variant with no explicit = n discriminant. Under @stable, auto-increment is disallowed — inserting a new variant in the middle would otherwise renumber every variant after it without anyone noticing.
@stable
enum Packet: u8 {
Connect = 0,
Data,
// ^^^^ error[TE117]: @stable enum `Packet` requires an explicit discriminant
// on variant `Data` (auto-increment is not allowed under @stable)
}Fix it¶
Give every variant an explicit value:
@stable
enum Packet: u8 {
Connect = 0,
Data = 1, // ok
}See also¶
TE114— numeric discriminants require a non-generic, all-unit enum.TE116— duplicate discriminant value.- /docs/data-structures#enums —
@stableenums and numeric discriminants.