After reading the spec, I have got:
Struct values are comparable if all their fields are comparable. Two struct values are equal if their corresponding non-blank fields are equal.
This implies to me that doing structA == structB
would mean that the values of each non-blank field in the struct would have fieldA == fieldB
applied to it. So why do we need a concept of a deep equals? Because if the struct has fields which are also structs, the information provided implies to me that those fields will be checked for equality using ==
also, so surely that would trigger traversal down the object graph anyway?