Ajo :-) Současný překladač si moc nehlídá, co se v Drop děje. Je to pro něj metoda jako každá jiná, jen se snaží dodržovat kontrolu ownershipu (borrow atd.). Na druhou stranu to "předání jinam" je hodně omezené, protože pokud to bude například jiné vlákno, stejně se použije Arc a metoda Send.
Jinak překladač toho nehlídá víc, například toto je trošku problém (AFAIK se to ale moc nekontroluje nikde):
impl Drop for Complex { fn drop(&mut self) { let c = Complex::new(2.,2.); println!("Dropping complex number: {:}+{:}i", self.real, self.imag); } }