title: swift: why need to conform equatable when overload the "==" operator?
body: <p>I'm learning swift and read a topic about operator overloading in extensions, which likes: </p>
  
  <pre><code>extension StreetAddress: Equatable {
      static func == (lhs: StreetAddress, rhs: StreetAddress) -&gt; Bool {
          return
              lhs.number == rhs.number &amp;&amp;
              lhs.street == rhs.street &amp;&amp;
              lhs.unit == rhs.unit
      }
  }
  </code></pre>
  
  <p>But how i can know i need to adopt the Equatable? </p>
  
  <p>I tried to remove that protocol and the function works the same. 
  No warnings or errors be reported. 
  Why?</p>