Почему этот явный вызов метода Scala позволяет его неявно разрешить?

Почему этот код не компилируется, но компилируется успешно, когда я раскомментирую указанную строку? (Я использую Scala 2.8 по ночам). Кажется, что явноstring2Wrapper позволяет использовать его неявно с этого момента.

class A {
  import Implicits.string2Wrapper
  def foo() {
     //string2Wrapper("A") ==> "B" // <-- uncomment
  } 
  def bar() {
    "A" ==> "B"
    "B" ==> "C"
    "C" ==> "D"
  }
  object Implicits {
    implicit def string2Wrapper(s: String) = new Wrapper(s)
    class Wrapper(s: String) {
      def ==>(s2: String) {}
    }
  }
}

редактироватьСпасибо за ответы, которые включают указатель на комментарий Мартина Одерского,

«Неявное преобразование без явного типа результата видно только в тексте после его собственного определения. Таким образом, мы избегаем ошибок циклических ссылок».

Мне все еще было бы интересно узнать 1) в чем опасность «циклических ошибок ссылок»? 2) Почему явный вызов имеет значение?

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

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