// run-pass // Regression test for Issue #22536: If a type implements Copy, then // moving it must not zero the original memory. trait Resources { type Buffer: Copy; fn foo(&self) {} } struct BufferHandle { raw: ::Buffer, } impl Copy for BufferHandle {} impl Clone for BufferHandle { fn clone(&self) -> BufferHandle { *self } } enum Res {} impl Resources for Res { type Buffer = u32; } fn main() { let b: BufferHandle = BufferHandle { raw: 1 }; let c = b; assert_eq!(c.raw, b.raw) }