Saltar al contenido
TE117 · Tipos · error

Un enum `@stable` exige discriminante explícito

Bajo `@stable` el autoincremento está prohibido: insertar una variante en el medio renumeraría silenciosamente todas las siguientes, rompiendo la codificación que la anotación promete mantener.

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

Véase también

Buscar en Zolo

9 resultados

en