Where is the place that implements the trait Sync for "& mut T"?

@afetisov interpretation is correct, as can be seen here. MySendNotCopy not implementing Copy made MyGeneric<MySendNotCopy> not implement Send. If the rule was that the auto-impl applied when the bounds of the impl weren't met, it would implement Send. (At least, that's how I've interpreted each of your interpretations :sweat_smile:.)

Note that you can't do something like this, but the rules accomplish the same thing.

See also this issue. Right now the rule is "we only discard the builtin implementation if an explicit impl applies to a given type while ignoring where-clauses of that explicit impl." [emphasis added]. In the future the plan is to be even quicker to discard the builtin implementation... once the ability to have overlapping implementations for marker traits, and/or to have negative where clauses, stabilize (thus allowing the same expressiveness).


I recommend this post on Send/Sync more generally.

3 Likes