estatico / scala-newtype

NewTypes for Scala with no runtime overhead
Apache License 2.0
540 stars 31 forks source link

recursive coerce #57

Open valenterry opened 5 years ago

valenterry commented 5 years ago

I often wrap newtypes in newtypes and then I want to access the basetype. Example:

@newtype case class Secret(value: String)
@newtype case class Password(value: Secret)
@newtype case class AdminPassword(value: Password)

val adminPassword: AdminPassword = ???

// Access the basetype
println(adminPassword.value.value.value)

Something like adminPassword.coerce[String] would be nice, or maybe even adminPassword.underlying. As Coercible is a typeclass, I think with the correct derivation it should be possible to get something like it.

Opinions?

gvolpe commented 4 years ago

+1 to this. I found myself in the same situation and I think it's doable.