В вашем коде есть пара вещей, которые не имеют для меня особого смысла.
Главное, чего я не понимаю, - это характер ответа:
Ответ в DORequest
равно: associatedtype Response: DOResponse
Ответ в DOPagedRequest
равен where Response: DOPagedResponse
.
Таким образом, когда вы объявляете public struct List: DOPagedRequest
, компилятор не сможет определить, для какого типа соответствует ли Response
.
это Response
типа DOResponse
или типа DOPagedResponse
?
Я бы посоветовал вам сделать что-то, чтобы объединить 2 протокола, а именно: DOResponse
и DOPagedResponse
под одним зонтом, примерно так:
public protocol GeneralResponse {}
public protocol DOResponse: Codable, GeneralResponse { }
public protocol DOPagedResponse: Codable, GeneralResponse {
var links: ResponseLinks { get }
}
public protocol DORequest {
associatedtype Response: GeneralResponse
var method: String { get }
var path: String { get }
}
public protocol DOPagedRequest {
var page: Int? { get }
var perPage: Int? { get }
}