Синтез возможен, если все associated types Equatable; для Error часто сравнивают ограниченные доменные enum или используют NSError codes, а не произвольный Error.
Разбор
- Иногда выносят
message/code вместо Error в state.
- Для UI достаточно сравнивать case без деталей.
- Тесты не должны хрупко зависеть от localizedDescription.
- Документируйте семантику равенства.
Итог
Равенство состояний с ошибками проектируйте явно, не всегда через сырой Error.