Evitar la ambigüedad de def implícita en Scala

Estoy tratando de crear una conversión implícita de cualquier tipo (por ejemplo, Int) a una cadena ...

Una conversión implícita a String significa que los métodos RichString (como a la inversa) no están disponibles.

implicit def intToString(i: Int) = String.valueOf(i)
100.toCharArray  // => Array[Char] = Array(1, 0, 0)
100.reverse // => error: value reverse is not a member of Int
100.length // => 3

Una conversión implícita a RichString significa que los métodos de cadena (como toCharArray) no están disponibles

implicit def intToRichString(i: Int) = new RichString(String.valueOf(i))
100.reverse // => "001"
100.toCharArray  // => error: value toCharArray is not a member of Int
100.length // => 3

Usar ambas conversiones implícitas significa que los métodos duplicados (como la longitud) son ambiguos.

implicit def intToString(i: Int) = String.valueOf(i)
implicit def intToRichString(i: Int) = new RichString(String.valueOf(i))
100.toCharArray  // => Array[Char] = Array(1, 0, 0)
100.reverse // => "001"
100.length // => both method intToString in object $iw of type 
   // (Int)java.lang.String and method intToRichString in object
   // $iw of type (Int)scala.runtime.RichString are possible 
   // conversion functions from Int to ?{val length: ?}

Entonces, ¿es posible convertir implícitamente a String y seguir siendo compatible con todos los métodos de String y RichString?

Respuestas a la pregunta(6)

Su respuesta a la pregunta