It's not niche at all; it's extremely common to need this. Maybe I'm not explaining it well. For example, an idiomatic pattern in Go is to return two values, one of which is an error:
func f() (SomeType, error) {
// ...
}
In Rust you would return one value:
fn f() -> anyhow::Result<SomeType> {
// ...
}
In Go (and similar languages like C) nothing enforces that you actually set exactly one value, and nothing enforces that you actually handle the values that are returned.
It's even worse if you need to add a variant, because then it's easy to make a mistake and not update some site that consumes it.
To be fair even Java solves this problem with checked exceptions. It forces you to handle them or pass them on. It's really just C++ and C# that have a bit of wild west error handling.
It's even worse if you need to add a variant, because then it's easy to make a mistake and not update some site that consumes it.