title: Swift: Is it possible to add a protocol extension to a protocol?
body: <p>Lets say I have two protocols:</p>
  
  <pre><code>protocol TheirPcol {}
  protocol MyPcol {
      func extraFunc()
  }
  </code></pre>
  
  <p>What I want to do is to create a protocol extension for 'TheirPcol' which lets <code>extraFunc()</code> work on anything which conforms to 'TheirPcol'. So something like this:</p>
  
  <pre><code>extension TheirPcol : MyPcol { // Error 'Extension of protocol 'TheirPcol' cannot have an inheritance clause.
      func extraFunc() { /* do magic */}
  }
  
  struct TheirStruct:TheirPcol {}
  let inst = TheirStruct()
  inst.extraFunc()
  </code></pre>
  
  <p>The kicker in this is that 'TheirPcol', 'TheirStruct' are all handled by an external API which I do not control. So I'm passed the instance 'inst'.</p>
  
  <p>Can this be done? Or am I going to have to do something like this:</p>
  
  <pre><code>struct TheirStruct:TheirPcol {}
  let inst = TheirStruct() as! MyPcol
  inst.extraFunc()
  </code></pre>