title: Cast to unrelated type always fails
body: <p>I have an enum declared as <code>Result&lt;T, NSError&gt;</code>.like in Alamofire
  There is a struct City that conforms to protocol Address</p>
  
  <pre><code>struct City: Address {
     let title:String?
  }
  </code></pre>
  
  <p>After network request and mapping I get filled Result of type <code>Result&lt;City,NSError&gt;</code></p>
  
  <p>And the problem arises when i try to pass this result to a method with signature</p>
  
  <p><code>func checkResult(resul:Result&lt;Address, NSError&gt;)</code></p>
  
  <p>compiler warns me that "cannot convert value of type <code>Result&lt;City,NSError&gt;</code> to expected argument type <code>Result&lt;Address,NSError&gt;</code>"</p>
  
  <p>But City conforms to Address and I'd like to be able to pass generic structs to method (because there are many Address objects, like streets, houses, etc. )
  Is there a way to silence the compiler? </p>