> I believe we can make that work, but I'd be fine with not doing auto-deref inside data-structures.

`Option` and tuples count as data structures.

>> Or does it just magically make Eq work properly when comparing references?
>
> Yes, for references and types that implement Deref.

How? Special casing `Eq`?

> No. I think you're looking at it as "the whole structure needs to change to conform as if it contained a value instead of a reference". That's not how I see it.

That is how I see it, because types/values need to match for a general function call (including `==`).

> Code that compares those two tuples certainly compares element-by-element, and when a &T is to be compared to a T, it's implicitly converted (as a deref) to a T.

(In general) the comparison happens using a trait: i.e. the compiler cannot know how the equality is implemented.

> But like I said, I'd be fine with not handling references inside structures, just the "top-level" type.

This means that the example here doesn't work.