Here's a recent relevant thread that covers this issue. I still hold the following opinions, expressed in much greater detail in that thread:
- The fact that you can iterate 
SetandDictionaryin a fixed order is inherent to these types being useful (see the implementation of the variousSetmethods, for example), not an accident. - The main problem with 
elementsEqualwas the name, but it was decided that the name wouldn't be changed. If the name of this method made it clear that compared in sequence order then it would be somewhat useless forSetbut not harmful. EquatableandelementsEqualare entirely unrelated, so nobody should expect thata == bimpliesa.elementsEqual(b)OR vice versa. e.g. You can reasonably create a collection type with additional properties that should be compared in anEquatableconformance, so even ifelementsEqualis true,==may not be.- There are many possibly useful methods you can call on a 
SetorDictionarybecause ofCollectionconformance, and a small number of possibly useless methods. - As I said in that other thread, I wouldn't mind collection conformance being moved to a property that provides a 
Collectionconforming view, which is the topic of this thread. But, as @DeFrenZ mentioned above, the opposite decision was made forString, so I would have to understand what is different about this case. I don't understand the reasoning that the situation is different because of the clash betweenEquatableandelementsEqual, because that clash is inherent as mentioned above (and we failed to make the change to the name required to make the difference clear). 
Again, the majority of methods on Set provided by Collection conformance are not demonstrably useless, see the above link. If you shuffle an Array the number of useful Collection methods on that Array is similar to that on Set.