[swift-evolution] [RFC] New collections model: collections advance indices
plx
plxswift at icloud.com
Tue Mar 8 09:27:44 CST 2016
So far I can’t think of a single index that would have difficulty implementing `Hashable`.
One policy question though:
struct MutationTrackingTreeIndex<T> {
private let mutation: Int
private unsafe(unowned) let treeNode: TreeNode<T>
}
// which hashValue would you expect:
extension MutationTrackingTreeIndex : Hashable {
var hashValue: Int {
return ObjectIdentifier(treeNode).hashValue
}
var hashValue: Int {
return ObjectIdentifier(treeNode).hashValue ^ self.mutation
}
}
…I’d assume the 2nd, but there’s then going to be room for confusion vis-a-vis how it works with Array (and other Int-indexed collections, or even e.g. an “Array” backed by a persistent tree of some kind).
I think `Hashable` indices is a good idea but I would want the expectation for considerations like the above to be documented for consistency’s sake.
> On Mar 7, 2016, at 7:25 PM, Dmitri Gribenko via swift-evolution <swift-evolution at swift.org> wrote:
>
> Hi,
>
> What does everyone think about requiring indices to conform to
> Hashable, in addition to the existing requirements for Equatable and
> Comparable?
>
> I don't think this should limit any viable collection designs, and yet
> might be useful, for example, to store indices in a set.
>
> Dmitri
>
> --
> main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
> (j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr at gmail.com>*/
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
More information about the swift-evolution
mailing list