# SE-0261: Identifiable Protocol

**URL:** <https://forums.swift.org/t/se-0261-identifiable-protocol/26602>\
**Category:** Proposal Reviews\
**Created:** [July 3, 2019, 9:24pm UTC](https://forums.swift.org/t/se-0261-identifiable-protocol/26602 "2019-07-03T21:24:48Z")\
**Posts on this page:** 1\
**Showing post:** 55

<div class="post-metadata">

**Author:** ![masters3d](https://avatars.discourse-cdn.com/v4/letter/m/c4cdca/32.png) [@masters3d](https://forums.swift.org/u/masters3d)\
**Post date:** [July 5, 2019, 9:46pm UTC](https://forums.swift.org/t/se-0261-identifiable-protocol/26602/55 "2019-07-05T21:46:33Z")

</div>

I’d be interested in seeing at least a consideration to a design using a concrete type like ValueIdentity similar to ReferenceIdentity. Perhaps ValueIdentity could just use a plain [small string](https://swift.org/blog/utf8-string/) internally to make it fast.

An update from the core team on the below would be nice.

> [@Lifting the "Self or associated type" constraint on existentials](https://forums.swift.org/t/lifting-the-self-or-associated-type-constraint-on-existentials/18025):
>
> When the first seed of Swift came out many years ago, there were technical reasons for the "self or associated type" constraint on protocol existentials: At that time, protocol witness tables did not carry associated type information, so it was impossible to re-open the dynamic type in order to dispatch methods on an existential when a protocol had associated types. This was fixed a while ago in order to allow for recursive protocol constraints, but we held on to the restriction on existentials …

---

_[View the full topic](https://forums.swift.org/t/se-0261-identifiable-protocol/26602)._
