Это два разных способа его реализации.
Один короче
implicit def toR1(s:String) = new { def getLength = s.length)}
Второй длиннее
class R2(s:String){def getLength2 = s.length)} implicit def toR2(s:String) = new R2(s)
Какой из них лучше?
В первой версии используется структурный тип . Это позволяет писать короткий и читаемый код, но недостатком структурных типов является то, что отражение используется во время выполнения, когда вы вызываете метод структурного типа. Вызов метода с помощью отражения медленнее, чем прямой вызов метода.
Больше подробностей в этом посте (написано мной): Избегайте структурных типов при развертывании библиотек