The Hashtable Problem: A Litmus Test for External Impl Proposals

But those all depend on the type being something for which they can define Hash.

It's really important to me that for HashSet<TrustedType>, if someone gives me one it actually works. I don't want to ever let someone give me a garbage HashSet<u32>, for example. I want to be able to trust it because I trust u32 and I trust HashSet.

(This is also why I was opposed to the "raw API": the current plan of having a raw table type is great, but a safe way to violate the invariants on a HashSet<u32> would, IMHO, have blown a huge hole in the whole "Aiming for correctness with types" thing.)

8 Likes