<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Thank you very much for your response. I made the change in the&nbsp;<a href="https://gist.github.com/hooman/2b74d9756976a43330c1acfcfba699f3" class="">gist</a>. This takes me back to the same error that forced my into duplication path:<div class=""><br class=""><div class="">“Cannot assign through subscript: ‘self’ is immutable” for the object case.</div><div class=""><br class=""></div><div class="">The&nbsp;<a href="https://gist.github.com/hooman/2b74d9756976a43330c1acfcfba699f3" class="">gist</a>&nbsp;is self contained if you want to compile it yourself.</div><div class=""><br class=""></div><div class="">Is this some kind of bug or the expected behavior?</div><div class=""><br class=""></div><div class=""><div class=""><div><blockquote type="cite" class=""><div class="">On Apr 29, 2016, at 5:28 PM, Dave Abrahams via swift-users &lt;<a href="mailto:swift-users@swift.org" class="">swift-users@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><br class="">on Fri Apr 29 2016, Hooman Mehr &lt;<a href="http://swift-users-at-swift.org" class="">swift-users-AT-swift.org</a>&gt; wrote:<br class=""><br class=""><blockquote type="cite" class="">Hi,<br class=""><br class="">I am designing APIs that need to support both reference (class/object) and value<br class="">types. I am running into restrictions of `mutating` keyword in my protocols and<br class="">this is causing a lot of duplication of code. In order to understand what I mean<br class="">please take a look at this gist. <br class=""><br class="">As you see, I have pairs of almost identical declarations: KeyValueStore vs<br class="">KeyValueStoreObject, and AnyDictionaryStore vs AnyDictionaryStoreObject. This<br class="">keeps rapidly growing as I am designing my APIs. Is there any sane way around<br class="">this?<br class=""></blockquote><br class="">protocol KeyValueStoreObject : class, KeyValueStore {}<br class="">protocol AnyDictionaryStoreObject : class, AnyDictionaryStore {}<br class=""><br class="">would probably work for you.<br class=""><br class="">HTH,<br class=""><br class="">-- <br class="">Dave<br class=""><br class="">_______________________________________________<br class="">swift-users mailing list<br class=""><a href="mailto:swift-users@swift.org" class="">swift-users@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-users<br class=""></div></div></blockquote></div><br class=""></div></div></div></body></html>