trait Foo { fn f(&self); } struct Bar { x: isize, } impl Drop for Bar { fn drop(&mut self) {} } impl Foo for Bar { fn f(&self) { println!("hi"); } } fn main() { let x = Box::new(Bar { x: 10 }); let y: Box = x as Box; let _z = y.clone(); //~ ERROR the method }