package dev.inmo.micro_utils.safe_wrapper interface SafeWrapper { fun safe (block: T.() -> R): Result = unsafeTarget().runCatching(block) fun unsafe(block: T.() -> R): R = unsafeTarget().block() fun unsafeTarget(): T class Default(private val t: T) : SafeWrapper { override fun unsafeTarget(): T = t } companion object { operator fun invoke(t: T) = Default(t) } }