A nice way to enable developers to define an equality function based on the default equality operator (available per the current proposal) would be:
within the developer's definition of equality for type MyType the symbol == means the default equality operator (only for type MyType of course)
Then you can do:
func ==(lhs:MyType,rhs:MyTYpe)
{
var equal = false
if lhs == rhs {equal = /*apply some additional test*/}
return equal
}
or
func ==(lhs:MyType,rhs:MyType)
{
var equal = false
var lhsCopy = lhs
var rhsCopy = rhs
lhsCopy.uncomparedProperty1 = 0
lhsCopy.uncomparedProperty2 = 0
rhsCopy.uncomparedProperty1 = 0
rhsCopy.uncomparedProperty2 = 0
if lhsCopy == rhsCopy {equal = lhs.someMoreRelevantCalculatedProperty == rhs.someMoreRelevantCalculatedProperty}
return equal
}