{"id":41789,"date":"2024-01-17T16:45:48","date_gmt":"2024-01-17T21:45:48","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=41789"},"modified":"2024-01-17T16:45:48","modified_gmt":"2024-01-17T21:45:48","slug":"swift-protocol-requirement-quirks","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2024\/01\/17\/swift-protocol-requirement-quirks\/","title":{"rendered":"Swift Protocol Requirement Quirks"},"content":{"rendered":"<p><a href=\"https:\/\/www.jessesquires.com\/blog\/2024\/01\/17\/swift-protocol-requirement-quirks\/\">Jesse Squires<\/a>:<\/p>\n<blockquote cite=\"https:\/\/www.jessesquires.com\/blog\/2024\/01\/17\/swift-protocol-requirement-quirks\/\"><p>A handful of protocol witness mismatches are currently allowed:<\/p><ul><li>Non-failable initializers can satisfy failable initializer protocol requirements (as I encountered above)<\/li><li>Non-throwing functions can satisfy throwing function protocol requirements<\/li><li>Non-escaping closure parameters can satisfy <code>@escaping<\/code> protocol requirements<\/li><li>Generic functions can satisfy non-generic protocol requirements<\/li><li>Non-mutating functions can satisfy <code>mutating<\/code> protocol requirements<\/li><li>Enum cases can satisfy <code>static<\/code> function protocol requirements<\/li><li>Synchronous methods can satisfy <code>async<\/code> protocol requirements<\/li><\/ul><\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Jesse Squires: 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 requirementsNon-escaping closure parameters can satisfy @escaping protocol requirementsGeneric functions can satisfy non-generic protocol requirementsNon-mutating functions can satisfy mutating protocol requirementsEnum cases can satisfy static function protocol requirementsSynchronous [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2024-01-17T21:45:51Z","apple_news_api_id":"8c5beeb1-88b9-4527-afca-235fb59d41ac","apple_news_api_modified_at":"2024-01-17T21:45:51Z","apple_news_api_revision":"AAAAAAAAAAD\/\/\/\/\/\/\/\/\/\/w==","apple_news_api_share_url":"https:\/\/apple.news\/AjFvusYi5RSevyiNftZ1BrA","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[4],"tags":[46,71,901],"class_list":["post-41789","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-languagedesign","tag-programming","tag-swift-programming-language"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/41789","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=41789"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/41789\/revisions"}],"predecessor-version":[{"id":41790,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/41789\/revisions\/41790"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=41789"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=41789"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=41789"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}