How come by default impl methods take ownership via &self?

This is still not true, as I also mentioned in the other thread. The compiler is not stalking your code looking for places to inject unnecessary copies. If you write code that requires a copy, Copy allows the compiler to insert it, but not implementing Copy in that case would make the code not compile. I'm aware of this exception but it is not generally what people are talking about when they say Copy allows the compiler to make copies for you.

!Copy is not an effective guard against unnecessary copies.

Here's another recent thread about Copy

1 Like