title: Swift: calling failable initializer from throwing initializer?
body: <p>I have a need to extend <code>struct</code> having failable initializer with a throwing initializer calling that failable initializer. And I see no elegant or clear way to do that in Swift 3.1.</p>
  
  <p>Something like this:</p>
  
  <pre><code>extension Product: JSONDecodable {
  
      public enum Error: Swift.Error {
          case unableToParseJSON
      }
  
      init(decodeFromJSON json: JSON) throws {
          guard let jsonObject = json as? JSONObject else {
              throw Error.unableToParseJSON
          }
  
          // Meta-code
          self.init(dictionary: jsonObject) ?? throw Error.unableToParseJSON
      }
  }
  </code></pre>
  
  <p>Is there an elegant and clean way to do that?</p>