79072129

Date: 2024-10-09 21:40:37
Score: 1
Natty:
Report link

Answering, you should inline and typelevel programming using good old implicits :

implicit inline def name2user(inline n: String)
(implicit inline ev: Username = n): User = User(n)   

val user3: User = name2user("@john") // compile   
val user4: User = "@john" // compile  
val user5: User = "#john" // does not compile as it should 
Reasons:
  • Has code block (-0.5):
  • Self-answer (0.5):
  • Low reputation (1):
Posted by: Coo L'Hibou