FIFO-очередь запросов с type erasure (any / some)
Задача
Есть протокол с associated types. Напиши очередь, которая выполняет запросы строго по одному, в порядке добавления. Метод add должен принимать любой Request.
protocol Request {
associatedtype Response
associatedtype Failure: Error
typealias Handler = (Result<Response, Failure>) -> Void
var handler: Handler { get }
func perform(then handler: @escaping Handler)
}
final class RequestQueue {
func add(_ request: Request) { } // не компилируется — почему?
}
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep