The problem with Result is that it can only deal with a single error type, and we can’t decide what type that should be. With variadic anything, we could give it an arbitrary list:
Result<T, OneOf<Err1, ...>> // variadic generics
Result<T, (Option<Err1>, ...)> // variadic tuple
Result<T, OneOf(Err1, ...)> // variadic enum?
I don’t expect it would be much prettier to use than C++, but it works.