On Saturday, 7 November 2020 at 01:50:15 UTC, Jesse Phillips wrote:
On Friday, 6 November 2020 at 15:06:18 UTC, Andrey Zherikov wrote:
On Friday, 6 November 2020 at 14:58:40 UTC, Jesse Phillips wrote:
On Friday, 6 November 2020 at 14:20:40 UTC, Andrey Zherikov wrote:
This issue seems hit the inability to implicitly convert custom types. May be it makes more sense to ask in a separate thread.

The return type must be the same for all execution paths.

Result!void is a different type from Result!int. You aren't passing a 'Result' because that doesn't exist as a type.

To clarify my statement:
Yes, Result!void and Result!int are different types but I couldn't find a way to implicitly convert one to another.

I'm curious what your semantics would be.

# Result!void => Result!int

How does the type know it can convert to int, or string, or Foo?

What does it mean for a void to be an int?

# Result!int => Result!void

If you have something, what does it mean to go to not having that something. Would you really want to implicitly lose that something?

Ideally error type shouldn't depend on what type the operation returns but language has a limitation that function must return single type.

Technically Failure struct can be moved out from Result(T) but the issue remains the same: how to convert Failure to Result!T for any T.

Reply via email to