title: Swift - Differences between inheriting protocol and constraining Self to protocol
body: <p>I have a protocol <code>A</code>:</p>
  
  <pre><code>protocol A { }
  </code></pre>
  
  <p>What are the differences between implementing protocol <code>B</code> like this:</p>
  
  <pre><code>protocol B: A { }
  </code></pre>
  
  <p>versus implementing it like this:</p>
  
  <pre><code>protocol B where Self: A { }
  </code></pre>
  
  <p>?</p>
  
  <p>What can I do with one that I can't do with the other? Where will I run into a problem with one that I could fix by switching it to the other?</p>