[swift-evolution] Proposal: CustomConvertible protocol

Adrian Zubarev adrian.zubarev at devandartist.com
Fri Dec 4 07:51:25 CST 2015

We have finally a corner where people can share their ideas on how Swift can be improved, and I’m glad my ideas might be part of this fun.

Swift introduced a few Convertible protocols, but it still needs some more If you ask me.

Something like this:

public protocol CustomConvertible {
    typealias CustomType
    public init(value: Self.CustomType) // or in a better way I can't come up with
But it should work in a way that we could create more different types like enums and ErrorType.

protocol AConvertible: CustomConvertible { /* some stuff here*/ }
protocol BConvertible: CustomConvertible { /* some stuff here*/ }

struct A {
    var foo: Int = 0

struct B {
    var boo: String = "Hello World"

struct C: AConvertible, BConvertible {
    typealias CustomAType = A
    typealias CustomBType = B
    var magical: SomeType
    init(value: CustomAType) {
        // implement it
    init(value: CustomBType) {
        // implement it


let firstC: C = A() // this is what I'm missing in Swift
let secondC: C = B() // this would be a great syntax sugar
What do you think?

Regards Adrian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151204/877dfd93/attachment.html>

More information about the swift-evolution mailing list