Я реализующие объекты результата с использованием Result, он определяет коробочный результат, как Факультативные с enum
:Реализовать Equatable Пустоты (None) типа
public enum Result<T, Error>: Printable, DebugPrintable {
case Success(Box<T>)
case Failure(Box<Error>)
...
}
Протокол Equatable
определен для Result
выглядит следующим образом:
public func == <T: Equatable, Error: Equatable> (left: Result<T, Error>, right: Result<T, Error>) -> Bool
Таким образом, T
должен соответствовать Equatable
.
Я хотел был бы иметь Success
что коробки a Void
подобный тип. Но, Void
не Equatable
, как это определено как пустой кортеж:
typealias Void =()
Цель состоит в том, чтобы быть в состоянии иметь Result
типы, где я не заботиться о значении, когда удается.
Возможно ли иметь Equatable
Void
(или нет значения)?
Как быстрая мысль, есть возможность создать пустой struct
, но я ищу (если возможно) для более элегантного решения.
AFAIK, как задумано результат, успех * должен * содержать в противном случае это будет считаться ошибкой. Итак, мой вопрос больше касается того, чтобы иметь «Equatable none value non-optional type», для создания перечисления, когда значение не имеет значения. – atxe
Так что ответ отрицательный. Если вы хотите, чтобы успех возвращался в квадратную форму, пустота не соответствует требованию. Как вы говорите, пустой кортеж не соответствует уравновешенному. –