Extend Hashable with "Nameable"

Feel like it makes alot of sense for hashable types to have an additional getter to refer to the "referent" of the hash we are using. Heres a helpful extension. Also, intuitively it makes sense linguistically for any "value" to have "reference" provided for it.

example. "LeBron James" is the value of the athlete on the LA Lakers. "LBJ" , "King James", "King" are references of him. Any via this example, by default, LeBron James has a default reference name of "Lebron James".

protocol Nameable : Hashable {
   var refeValue : String { get }
}

I also would refer to the post below for more clarity. Particularly, this would be helpful for system level hash or logging systems. I would prefer conversation on how this would interact with KeyPaths rather than "KeyPaths fill this need".

What do you mean by "type of hash"? Do you mean the hashing algorithm, such as SipHash or xxhash? If so, that is no longer part of the Hashable protocol, which computes hashes by feeding data into a Hasher value.

type of the hash, meaning the method we use to calculate the hash , which doesn't necessarily refer to any hashing algorithm we compose of but rather the "referent" we are using to refer to the "value". I corrected it. This can also pave way for many to 1 hash algorithms for confusion and diffusion behaviors if used properly with KeyPaths.