I can't deconstruct `Result` (<https://kotlinlang....
# getting-started
r
I can't deconstruct
Result
(https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-result/) with a
when
?
🙌 1
y
Sadly, no. There's a YouTrack issue for `sealed value class`es that would fix this. Also, Refined types would fix this as well:
Copy code
typealias Success<T> = Result<T> satisfies Result::isSuccess
typealias Failure = Result<Any?> satisfies Result::isFailure
val <T> Success<T>.value get() = getOrElse { error("Unexpected") }
val Failure.error get() = exceptionOrNull()!!

// Assuming that `is/as` work in the obvious way
when (result) {
  is Success -> value.doSomething()
  is Failure -> error.doSomethingElse()
}
r
Ah thanks. I guess that makes
Result
a lot less useful.
y
Personally, I only use
Result
when dealing with low-level Coroutines code
c
If you want to use functional-style result types, see #C5UPMM0A0’s
Either
. That's not what
Result
is meant for, so it won't be convenient.