From the docs on Drop:
You cannot implement both
Dropon the same type. Types that are
Copyget implicitly duplicated by the compiler, making it very hard to predict when, and how often destructors will be executed. As such, these types cannot have destructors.
Now I understand as a user the distinction between Copy and Clone. Copy types will get copied when explicitly assigned rather than moved. Is that all that's being referred to here by "implicitly duplicated by the compiler"? Or are there some surprising/interesting reasons the compiler is inserting other copies?