Would it make sense to use the same feature for av...
# language-proposals
m
Would it make sense to use the same feature for avoiding temporary unwraps?
Copy code
interface Inline<Type: Any, Wrapped> {
	fun wrap(wrapped: Wrapped): Type
	fun unwrap(): Wrapped
}

inline class Username(val wrapped: String): Inline<Username, String> // interface implemented by compiler

val username = Username("TEST")

// manual unwrap and wrap at every call-site
val adjustedUsername = Username(username.wrapped.toLowerCase())

// for all String-based inline types
fun <Type: Any> Inline<Type, String>.toLowerCase() =
	wrap(unwrap().toLowerCase())

// easy!
val adjustedUsername = username.toLowerCase()