On Wed, Jul 9, 2025 at 1:17 PM Rob Landers <rob@bottled.codes> wrote:

>
> Hey Marco,
>
> I think this relies on whether the “natural value” of a unit enum is a
> string or not. It might be, or it might not be. I don’t think you have a
> compelling argument on why it is a string and that string is the name.
> Personally, I used int-backed enumerations far more so I would argue that
> the natural value is an integer, not a string. I’ve been thinking of a
> “quality-of-life RFC” for obvious enums, for some time now. Basically,
> backed enums without a value receive the “obvious” value. So a string
> backed enum gets the name, while an int gets the ordered number.
>
> I think something like that makes more sense than trying to decide what
> the “natural value” of a unit enum is.
>
> — Rob
>

It makes sense that if a Unit Enum were to be given a `value` we would have
a hard time defining what type such value should have. This strengthens my
desire for Larry's suggestion for String-backed Enums defaulting to their
names. That way, we sidestep the issue of the value type of a Unit Enum, we
avoid a potential breaking change by introducing a method that could
conflict with userland and it also makes it opt-in. By adding `: string` to
a Unit Enum, we make the `->value` equivalent to the `->name` and receive
the from() implementation for it.

It's currently undeniable that a Unit Enum name is a string.

-- 
Marco Deleu

Reply via email to