Swift Protocol Requirement Quirks
A handful of protocol witness mismatches are currently allowed:
- Non-failable initializers can satisfy failable initializer protocol requirements (as I encountered above)
- Non-throwing functions can satisfy throwing function protocol requirements
- Non-escaping closure parameters can satisfy
@escapingprotocol requirements- Generic functions can satisfy non-generic protocol requirements
- Non-mutating functions can satisfy
mutatingprotocol requirements- Enum cases can satisfy
staticfunction protocol requirements- Synchronous methods can satisfy
asyncprotocol requirements