Почему implicitConversions требуется для неявных определений, но не для классов?

Насколько я понимаю, неявные преобразования могут привести к потенциально трудному для понимания коду или коду, страдающему от других проблем (возможно, даже ошибок?), Поэтому им требуется явное включение для использования в коде без получения предупреждений.

Однако, учитывая, что неявные преобразования в большой части (если не большую часть времени) используются для обертывания объекта с объектом другого типа, так же как и неявные классы - I 'Буду признателен, если вы меня поправите, если яя не правпочему первые требуют импортаscala.language.implicitConversions а последние нет?

object Main extends App {
  implicit class StringFoo(x: String) {
    def fooWithImplicitClass(): Unit =
      println("foo with implicit class")
  }
  // => silence.

  "asd".fooWithImplicitClass()

  /************************/

  class Foo(x: String) {
    def fooWithImplicitDef(): Unit =
      println("foo with implicit def")
  }
  implicit def string2Foo(x: String) = new Foo(x)
  // => warning: implicit conversion method string2Foo should be enabled

  "asd".fooWithImplicitDef()
}

Ответы на вопрос(2)

Ваш ответ на вопрос