Protocolo Swift para exigir propriedades como protocolo

Estou tentando definir um protocolo "Repositório" que requer a definição de algumas propriedades (que implementam um protocolo específico "DataSource")

Mas, devido à complexidade do meu cenário real, uma dessas propriedades precisa ser um subprotocolo de "DataSource".

Reduzi o problema para este código simples:

protocol DataSource { }

protocol ExtraDataSouce: DataSource {
    func method1() -> String
}

struct MyDataSource: ExtraDataSouce {
    func method1() -> String {
        return "whatever"
    }
}


protocol Repository {
    var firstDataSource: DataSource { get }
    var secondDataSource: DataSource { get }
}

struct MyRepository: Repository {
    var firstDataSource: DataSource
    var secondDataSource: MyDataSource
}

Que retornam um erro no momento da compilação porque "MyRepository" não está em conformidade com "Repository". Mas acho que sim ... Alguma idéia de por que não aceita "secondDataSource" em "MyRepository" definido como "MyDataSource"?

questionAnswers(2)

yourAnswerToTheQuestion