-1 from me. I suggest to wait until we get generic protocols in Swift 4, then we can use the following: protocol From<T> { init(_ from: T) } And deprecate all the weird Convertibles.