У меня есть общий запрос REST:
struct Request<T> {…}
T
- тип возвращаемого запроса, например:
struct Animal {…}
let animalRequest = Request<Animal>
let animal: Animal = sendRequest(animalRequest)
Теперь я хотел бы выразить, что общий тип должен соответствовать Decodable
чтобы я мог декодировать ответ JSON с сервера:
struct Request<T> where T: Decodable {…}
struct Animal: Decodable {…}
Это имеет смысл и работает - пока я не получаю запрос, который не имеет ответа, Request<Void>
. Компилятор не доволен этим:
Type 'Void' does not conform to protocol 'Decodable'
Моя неоднозначная попытка решить эту проблему путем добавления Decodable
соответствия Void
была быстро обнаружена компилятором:
extension Void: Decodable {…} // Error: Non-nominal type 'Void' cannot be extended
Правильно иметь запрос по типу возврата. Есть ли способ заставить его работать с типами возврата Void
? (Например, запросы, которые просто создают что-то на сервере и ничего не возвращают.)