]> git.lizzy.rs Git - rust.git/blob - src/test/ui/issues/issue-22536-copy-mustnt-zero.rs
Merge commit '97e504549371d7640cf011d266e3c17394fdddac' into sync_cg_clif-2021-12-20
[rust.git] / src / test / ui / issues / issue-22536-copy-mustnt-zero.rs
1 // run-pass
2 // Regression test for Issue #22536: If a type implements Copy, then
3 // moving it must not zero the original memory.
4
5
6 trait Resources {
7     type Buffer: Copy;
8     fn foo(&self) {}
9 }
10
11 struct BufferHandle<R: Resources> {
12     raw: <R as Resources>::Buffer,
13 }
14 impl<R: Resources> Copy for BufferHandle<R> {}
15 impl<R: Resources> Clone for BufferHandle<R> {
16     fn clone(&self) -> BufferHandle<R> { *self }
17 }
18
19 enum Res {}
20 impl Resources for Res {
21     type Buffer = u32;
22 }
23
24 fn main() {
25     let b: BufferHandle<Res> = BufferHandle { raw: 1 };
26     let c = b;
27     assert_eq!(c.raw, b.raw)
28 }