You must fulfill the requirements of the protocol with the exact type that’s required:
protocol Q { }
protocol QQ: Q { }
protocol P { var q: Q { get } }
struct S: P { var q: QQ } // error: type ‘S’ does not conform to protocol ‘P’
You must fulfill the requirements of the protocol with the exact type that’s required:
protocol Q { }
protocol QQ: Q { }
protocol P { var q: Q { get } }
struct S: P { var q: QQ } // error: type ‘S’ does not conform to protocol ‘P’