I agree that a typeclass for explicit conversions via as would be useful. How about
trait Convertible[-A, +B] extends (A => B) with
def (x: A) as: B
I think Convertible is a good name for this since it describes a capability: being converted by calling the as method. I.e. analogously, if we’d want to avoid category-speak, a Functor would be called Mappable since it provides a map method, instead of being called Map directly.
EDIT: Or maybe Converter, which emulates what we do for converting between Scala and Java collections.