Rust-like Result

Run Settings
LanguageKotlin
Language Version
Run Command
sealed class Result<T> data class Error<T>(val error: Throwable) : Result<T>() data class Value<T>(val value: T) : Result<T>() inline fun <T> mightFail(scope: () -> T): Result<T> { return try { Value(scope()) } catch (ex: Throwable) { Error(ex) } } fun <T> notNull(value: T?) = mightFail { value!! } fun printVal(value: Result<String>) { when (value) { is Error -> println("error: ${value.error}") is Value -> println("value: ${value.value}") } } fun main(args : Array<String>){ val foo = notNull("foo") val bar = notNull(null as String?) printVal(foo) printVal(bar) }
Editor Settings
Theme
Key bindings
Full width
Lines