<div dir="ltr">With the awesome expansion of protocol oriented programming that swift has allowed, the lack of generic protocols has felt noticeably lacking and painful in some cases. I made an in depth proposal here: <a href="https://github.com/tal/swift-evolution/blob/tal/generic-protocol-proposal/proposals/NNNN-add-generic-protocols.md" rel="noreferrer" target="_blank" style="color:rgb(42,128,185);text-decoration:none;font-family:Slack-Lato,appleLogo,sans-serif;font-size:15px">https://github.com/tal/swift-evolution/blob/tal/generic-protocol-proposal/proposals/NNNN-add-generic-protocols.md</a><div><br></div><div>But the tl;dr is this:</div><div><br></div><div><div>protocol Validator&lt;TypeToValidate&gt; {</div><div>  var value: TypeToValidate { get set }</div><div>  var valueIfValid: TypeToValidate? { get }</div><div>}</div><div><br></div><div>struct FooStringValidator: Validator&lt;String&gt; {</div><div>  //... implementation</div><div>}</div><div><br></div><div>let stringValidator: Validator&lt;String&gt;</div></div><div><br></div><div>Look forward to hearing some feedback.</div></div>